{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Chapter 6 - Exercises"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Applied Questions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "from sklearn.decomposition import PCA\n",
    "from sklearn.cross_decomposition import PLSRegression\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.linear_model import LinearRegression,Lasso,LassoCV,RidgeCV\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.model_selection import cross_val_score,train_test_split\n",
    "from sklearn.metrics import r2_score\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "import statsmodels.api as sm\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 8. In this exercise, we will generate simulated data, and will then use this data to perform best subset selection.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (a) Use the rnorm() function to generate a predictor X of length n = 100, as well as a noise vector  of length n = 100.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Size of X is  100\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(1)\n",
    "\n",
    "X = np.random.randn(100)\n",
    "eps = np.random.randn(100)\n",
    "print('Size of X is ',len(X))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (b) Generate a response vector Y of length n = 100 according to the model\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Y = β0 + β1X + β2X2 + β3X3 + eps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# weights are of our choice\n",
    "beta = [3,4,2,1]\n",
    "Y = beta[0] + beta[1]*X + beta[2]*X**2 + beta[3]*X**3 + eps"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (c) Use the regsubsets() function to perform best subset selection in order to choose the best model containing the predictors X, X2,...,X10. What is the best model obtained according to Cp, BIC, and adjusted R2? Show some plots to provide evidence for your answer, and report the coefficients of the best model obtained.\n",
    "\n",
    " \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X1</th>\n",
       "      <th>X2</th>\n",
       "      <th>X3</th>\n",
       "      <th>X4</th>\n",
       "      <th>X5</th>\n",
       "      <th>X6</th>\n",
       "      <th>X7</th>\n",
       "      <th>X8</th>\n",
       "      <th>X9</th>\n",
       "      <th>X10</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.624345</td>\n",
       "      <td>2.638498</td>\n",
       "      <td>4.285832</td>\n",
       "      <td>6.961671</td>\n",
       "      <td>11.308158</td>\n",
       "      <td>18.368354</td>\n",
       "      <td>29.836551</td>\n",
       "      <td>48.464863</td>\n",
       "      <td>78.723675</td>\n",
       "      <td>127.874436</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.611756</td>\n",
       "      <td>0.374246</td>\n",
       "      <td>-0.228947</td>\n",
       "      <td>0.140060</td>\n",
       "      <td>-0.085683</td>\n",
       "      <td>0.052417</td>\n",
       "      <td>-0.032066</td>\n",
       "      <td>0.019617</td>\n",
       "      <td>-0.012001</td>\n",
       "      <td>0.007342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.528172</td>\n",
       "      <td>0.278965</td>\n",
       "      <td>-0.147342</td>\n",
       "      <td>0.077822</td>\n",
       "      <td>-0.041103</td>\n",
       "      <td>0.021710</td>\n",
       "      <td>-0.011466</td>\n",
       "      <td>0.006056</td>\n",
       "      <td>-0.003199</td>\n",
       "      <td>0.001689</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.072969</td>\n",
       "      <td>1.151262</td>\n",
       "      <td>-1.235268</td>\n",
       "      <td>1.325403</td>\n",
       "      <td>-1.422116</td>\n",
       "      <td>1.525886</td>\n",
       "      <td>-1.637228</td>\n",
       "      <td>1.756694</td>\n",
       "      <td>-1.884878</td>\n",
       "      <td>2.022415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.865408</td>\n",
       "      <td>0.748930</td>\n",
       "      <td>0.648130</td>\n",
       "      <td>0.560897</td>\n",
       "      <td>0.485404</td>\n",
       "      <td>0.420073</td>\n",
       "      <td>0.363534</td>\n",
       "      <td>0.314605</td>\n",
       "      <td>0.272262</td>\n",
       "      <td>0.235617</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         X1        X2        X3        X4         X5         X6         X7  \\\n",
       "0  1.624345  2.638498  4.285832  6.961671  11.308158  18.368354  29.836551   \n",
       "1 -0.611756  0.374246 -0.228947  0.140060  -0.085683   0.052417  -0.032066   \n",
       "2 -0.528172  0.278965 -0.147342  0.077822  -0.041103   0.021710  -0.011466   \n",
       "3 -1.072969  1.151262 -1.235268  1.325403  -1.422116   1.525886  -1.637228   \n",
       "4  0.865408  0.748930  0.648130  0.560897   0.485404   0.420073   0.363534   \n",
       "\n",
       "          X8         X9         X10  \n",
       "0  48.464863  78.723675  127.874436  \n",
       "1   0.019617  -0.012001    0.007342  \n",
       "2   0.006056  -0.003199    0.001689  \n",
       "3   1.756694  -1.884878    2.022415  \n",
       "4   0.314605   0.272262    0.235617  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "poly = PolynomialFeatures(10,include_bias=False)\n",
    "predictors = poly.fit_transform(pd.DataFrame({'X':X}))\n",
    "predictors = pd.DataFrame(predictors)\n",
    "col = ['X' + str(i) for i in range(1,11)]\n",
    "predictors.columns = col\n",
    "predictors.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_linear_reg(X,Y):\n",
    "    #Fit linear regression model and return RSS and R squared values\n",
    "    X = sm.add_constant(X)\n",
    "    model = sm.OLS(Y,X).fit()\n",
    "    return model.ssr,model.rsquared,model\n",
    "    \n",
    "\n",
    "from tqdm import tnrange, tqdm_notebook\n",
    "from itertools import combinations\n",
    "\n",
    "def run_subset_selection(X,y):\n",
    "    #Initialization variables\n",
    "    RSS_list, R_squared_list, feature_list = [],[],[]\n",
    "    aic_list,bic_list,adj_r_squared_list = [],[],[]\n",
    "    numb_features = []\n",
    "\n",
    "    #Looping over k = 1 to k = 11 features in X\n",
    "    for k in tnrange(1,len(X.columns) + 1, desc = 'Loop...'):\n",
    "        best_features = None\n",
    "        best_RSS = None\n",
    "        best_r2 = 0\n",
    "        best_model = None\n",
    "        \n",
    "        #Looping over all possible combinations: \n",
    "        for combo in combinations(X.columns,k):\n",
    "            tmp_result = fit_linear_reg(X[list(combo)],Y)   #Store temp result  \n",
    "            r2 = tmp_result[1]\n",
    "            if r2 > best_r2:\n",
    "                best_features = combo\n",
    "                best_RSS = tmp_result[0]\n",
    "                best_r2 = tmp_result[1]\n",
    "                best_model = tmp_result[2]\n",
    "                \n",
    "        RSS_list.append(best_RSS)\n",
    "        R_squared_list.append(best_r2)\n",
    "        feature_list.append(best_features)\n",
    "        numb_features.append(len(best_features))\n",
    "        aic_list.append(best_model.aic)\n",
    "        bic_list.append(best_model.bic)\n",
    "        adj_r_squared_list.append(best_model.rsquared_adj)\n",
    "        \n",
    "    #Store in DataFrame\n",
    "    df = pd.DataFrame({'numb_features': numb_features,'RSS': RSS_list, 'R_squared':R_squared_list,\n",
    "                      'AIC':aic_list,'BIC':bic_list,'adj_r2':adj_r_squared_list,'features':feature_list})\n",
    "    return df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "c82e8ceff0fe4bd5b60729b1e5832a1f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(IntProgress(value=0, description='Loop...', max=10, style=ProgressStyle(description_width='init…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "best_subset_results = run_subset_selection(predictors,Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>numb_features</th>\n",
       "      <th>RSS</th>\n",
       "      <th>R_squared</th>\n",
       "      <th>AIC</th>\n",
       "      <th>BIC</th>\n",
       "      <th>adj_r2</th>\n",
       "      <th>features</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>771.612854</td>\n",
       "      <td>0.819633</td>\n",
       "      <td>492.118982</td>\n",
       "      <td>497.329322</td>\n",
       "      <td>0.817793</td>\n",
       "      <td>(X1,)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>329.558323</td>\n",
       "      <td>0.922965</td>\n",
       "      <td>409.046022</td>\n",
       "      <td>416.861533</td>\n",
       "      <td>0.921376</td>\n",
       "      <td>(X1, X2)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>84.811563</td>\n",
       "      <td>0.980175</td>\n",
       "      <td>275.313877</td>\n",
       "      <td>285.734557</td>\n",
       "      <td>0.979556</td>\n",
       "      <td>(X1, X2, X3)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>79.800246</td>\n",
       "      <td>0.981346</td>\n",
       "      <td>271.223347</td>\n",
       "      <td>284.249198</td>\n",
       "      <td>0.980561</td>\n",
       "      <td>(X1, X2, X3, X6)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>79.446732</td>\n",
       "      <td>0.981429</td>\n",
       "      <td>272.779363</td>\n",
       "      <td>288.410385</td>\n",
       "      <td>0.980441</td>\n",
       "      <td>(X1, X2, X3, X8, X10)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>77.901340</td>\n",
       "      <td>0.981790</td>\n",
       "      <td>272.815004</td>\n",
       "      <td>291.051195</td>\n",
       "      <td>0.980616</td>\n",
       "      <td>(X1, X2, X5, X7, X8, X9)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>77.535196</td>\n",
       "      <td>0.981876</td>\n",
       "      <td>274.343886</td>\n",
       "      <td>295.185248</td>\n",
       "      <td>0.980497</td>\n",
       "      <td>(X1, X2, X3, X5, X7, X9, X10)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>77.090698</td>\n",
       "      <td>0.981980</td>\n",
       "      <td>275.768950</td>\n",
       "      <td>299.215482</td>\n",
       "      <td>0.980396</td>\n",
       "      <td>(X1, X2, X3, X4, X5, X6, X7, X9)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>76.794677</td>\n",
       "      <td>0.982049</td>\n",
       "      <td>277.384221</td>\n",
       "      <td>303.435923</td>\n",
       "      <td>0.980254</td>\n",
       "      <td>(X1, X2, X4, X5, X6, X7, X8, X9, X10)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>76.498124</td>\n",
       "      <td>0.982118</td>\n",
       "      <td>278.997310</td>\n",
       "      <td>307.654182</td>\n",
       "      <td>0.980109</td>\n",
       "      <td>(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   numb_features         RSS  R_squared         AIC         BIC    adj_r2  \\\n",
       "0              1  771.612854   0.819633  492.118982  497.329322  0.817793   \n",
       "1              2  329.558323   0.922965  409.046022  416.861533  0.921376   \n",
       "2              3   84.811563   0.980175  275.313877  285.734557  0.979556   \n",
       "3              4   79.800246   0.981346  271.223347  284.249198  0.980561   \n",
       "4              5   79.446732   0.981429  272.779363  288.410385  0.980441   \n",
       "5              6   77.901340   0.981790  272.815004  291.051195  0.980616   \n",
       "6              7   77.535196   0.981876  274.343886  295.185248  0.980497   \n",
       "7              8   77.090698   0.981980  275.768950  299.215482  0.980396   \n",
       "8              9   76.794677   0.982049  277.384221  303.435923  0.980254   \n",
       "9             10   76.498124   0.982118  278.997310  307.654182  0.980109   \n",
       "\n",
       "                                    features  \n",
       "0                                      (X1,)  \n",
       "1                                   (X1, X2)  \n",
       "2                               (X1, X2, X3)  \n",
       "3                           (X1, X2, X3, X6)  \n",
       "4                      (X1, X2, X3, X8, X10)  \n",
       "5                   (X1, X2, X5, X7, X8, X9)  \n",
       "6              (X1, X2, X3, X5, X7, X9, X10)  \n",
       "7           (X1, X2, X3, X4, X5, X6, X7, X9)  \n",
       "8      (X1, X2, X4, X5, X6, X7, X8, X9, X10)  \n",
       "9  (X1, X2, X3, X4, X5, X6, X7, X8, X9, X10)  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "best_subset_results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The best model according to adjR2 is model having features -  6\n",
      "The best model according to AIC is model having features -  4\n",
      "The best model according to BIC is model having features -  4\n"
     ]
    }
   ],
   "source": [
    "print('The best model according to adjR2 is model having features - ',\n",
    "      best_subset_results.sort_values('adj_r2',ascending=False)['numb_features'].values[0],\n",
    "     )\n",
    "print('The best model according to AIC is model having features - ',\n",
    "      best_subset_results.sort_values('AIC',ascending=True)['numb_features'].values[0])\n",
    "print('The best model according to BIC is model having features - ',\n",
    "      best_subset_results.sort_values('BIC',ascending=True)['numb_features'].values[0])\n",
    "\n",
    "# we can see that using different metrics can give us different outcomes, althuohg what we will observe is that \n",
    "# AIC and BIC will give us simialr results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Since we are going to need to plot these many times, lets make a functions to save us the trouble of writing this again and again\n",
    "def plot_results(df):\n",
    "    fig,(a1,a2,a3) = plt.subplots(1,3,figsize = (18,4))\n",
    "    a1.plot(df['numb_features'],df['AIC'],marker = 'o')\n",
    "    a1.axhline(y = min(df['AIC']),linestyle = 'dashed',linewidth = 0.8,color = 'black')\n",
    "    a1.axvline(x =  df.sort_values('AIC',ascending=True)['numb_features'].values[0],color = 'black',\n",
    "               linestyle = 'dashed',linewidth = 0.8)\n",
    "    a1.set_title('AIC')\n",
    "    a1.set_xlabel('Number of features')\n",
    "    a1.set_ylabel('AIC values')\n",
    "\n",
    "    a2.plot(df['numb_features'],df['BIC'],marker = 'o')\n",
    "    a2.axhline(y = min(df['BIC']),linestyle = 'dashed',linewidth = 0.8,color = 'black')\n",
    "    a2.axvline(x =  df.sort_values('BIC',ascending=True)['numb_features'].values[0],color = 'black',\n",
    "               linestyle = 'dashed',linewidth = 0.8)\n",
    "    a2.set_title('BIC')\n",
    "    a2.set_xlabel('Number of features')\n",
    "    a2.set_ylabel('BIC values')\n",
    "\n",
    "    a3.plot(df['numb_features'],df['adj_r2'],marker=  'o')\n",
    "    a3.axhline(y = max(df['adj_r2']),linestyle = 'dashed',linewidth = 0.8,color = 'black')\n",
    "    a3.axvline(x =  df.sort_values('adj_r2',ascending=False)['numb_features'].values[0],color = 'black',\n",
    "               linestyle = 'dashed',linewidth = 0.8)\n",
    "    a3.set_title('ADJUSTED R2 values')\n",
    "    a3.set_xlabel('Number of features')\n",
    "    a3.set_ylabel('Adj R2')\n",
    "    \n",
    "plot_results(best_subset_results)    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Features choosen by AIC  ['X1', 'X2', 'X3', 'X6']\n",
      "Features choosen by BIC  ['X1', 'X2', 'X3', 'X6']\n",
      "Features choosen by adj_r2  ['X1', 'X2', 'X3', 'X5', 'X7', 'X9', 'X10']\n"
     ]
    }
   ],
   "source": [
    "print('Features choosen by AIC ',list(best_subset_results['features'][3]))\n",
    "print('Features choosen by BIC ',list(best_subset_results['features'][3]))\n",
    "print('Features choosen by adj_r2 ',list(best_subset_results['features'][6]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (d) Repeat (c), using forward stepwise selection and also using backwards stepwise selection. How does your answer compare to the results in (c)?\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def forward_stepwise_selection(data,target):\n",
    "    total_features = [[]]\n",
    "    list_r2 = []\n",
    "    list_adj_r2 = []\n",
    "    list_aic,list_bic = [],[]\n",
    "    len_features = []\n",
    "    remaining_features = [col for col in data.columns if not col == target]\n",
    "    for i in range(1,len(data.columns)):\n",
    "        best_score = 0;best_feature = None\n",
    "        best_model = None\n",
    "        for feature in remaining_features:\n",
    "\n",
    "            X = total_features[i-1] + [feature]\n",
    "            model = sm.OLS(data[target],sm.add_constant(data[X])).fit()\n",
    "            score = model.rsquared\n",
    "#             print('For len {}, feature - {}, score is {}'.format(i,feature,score))\n",
    "\n",
    "            if score > best_score:\n",
    "                best_score = score\n",
    "                best_feature = feature\n",
    "                best_model = model\n",
    "                \n",
    "        total_features.append(total_features[i-1] + [best_feature])\n",
    "        remaining_features.remove(best_feature)\n",
    "        list_r2.append(best_model.rsquared)\n",
    "        list_adj_r2.append(best_model.rsquared_adj)\n",
    "        list_aic.append(best_model.aic)\n",
    "        list_bic.append(best_model.bic)\n",
    "        len_features.append(len(total_features[-1]))\n",
    "        \n",
    "    return pd.DataFrame({'numb_features': len_features, 'R_squared':list_r2,\n",
    "                      'AIC':list_aic,'BIC':list_bic,'adj_r2':list_adj_r2,'features':total_features[1:]})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X1</th>\n",
       "      <th>X2</th>\n",
       "      <th>X3</th>\n",
       "      <th>X4</th>\n",
       "      <th>X5</th>\n",
       "      <th>X6</th>\n",
       "      <th>X7</th>\n",
       "      <th>X8</th>\n",
       "      <th>X9</th>\n",
       "      <th>X10</th>\n",
       "      <th>Y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.624345</td>\n",
       "      <td>2.638498</td>\n",
       "      <td>4.285832</td>\n",
       "      <td>6.961671</td>\n",
       "      <td>11.308158</td>\n",
       "      <td>18.368354</td>\n",
       "      <td>29.836551</td>\n",
       "      <td>48.464863</td>\n",
       "      <td>78.723675</td>\n",
       "      <td>127.874436</td>\n",
       "      <td>18.613080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.611756</td>\n",
       "      <td>0.374246</td>\n",
       "      <td>-0.228947</td>\n",
       "      <td>0.140060</td>\n",
       "      <td>-0.085683</td>\n",
       "      <td>0.052417</td>\n",
       "      <td>-0.032066</td>\n",
       "      <td>0.019617</td>\n",
       "      <td>-0.012001</td>\n",
       "      <td>0.007342</td>\n",
       "      <td>2.297027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.528172</td>\n",
       "      <td>0.278965</td>\n",
       "      <td>-0.147342</td>\n",
       "      <td>0.077822</td>\n",
       "      <td>-0.041103</td>\n",
       "      <td>0.021710</td>\n",
       "      <td>-0.011466</td>\n",
       "      <td>0.006056</td>\n",
       "      <td>-0.003199</td>\n",
       "      <td>0.001689</td>\n",
       "      <td>1.701394</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.072969</td>\n",
       "      <td>1.151262</td>\n",
       "      <td>-1.235268</td>\n",
       "      <td>1.325403</td>\n",
       "      <td>-1.422116</td>\n",
       "      <td>1.525886</td>\n",
       "      <td>-1.637228</td>\n",
       "      <td>1.756694</td>\n",
       "      <td>-1.884878</td>\n",
       "      <td>2.022415</td>\n",
       "      <td>0.368960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.865408</td>\n",
       "      <td>0.748930</td>\n",
       "      <td>0.648130</td>\n",
       "      <td>0.560897</td>\n",
       "      <td>0.485404</td>\n",
       "      <td>0.420073</td>\n",
       "      <td>0.363534</td>\n",
       "      <td>0.314605</td>\n",
       "      <td>0.272262</td>\n",
       "      <td>0.235617</td>\n",
       "      <td>7.512709</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         X1        X2        X3        X4         X5         X6         X7  \\\n",
       "0  1.624345  2.638498  4.285832  6.961671  11.308158  18.368354  29.836551   \n",
       "1 -0.611756  0.374246 -0.228947  0.140060  -0.085683   0.052417  -0.032066   \n",
       "2 -0.528172  0.278965 -0.147342  0.077822  -0.041103   0.021710  -0.011466   \n",
       "3 -1.072969  1.151262 -1.235268  1.325403  -1.422116   1.525886  -1.637228   \n",
       "4  0.865408  0.748930  0.648130  0.560897   0.485404   0.420073   0.363534   \n",
       "\n",
       "          X8         X9         X10          Y  \n",
       "0  48.464863  78.723675  127.874436  18.613080  \n",
       "1   0.019617  -0.012001    0.007342   2.297027  \n",
       "2   0.006056  -0.003199    0.001689   1.701394  \n",
       "3   1.756694  -1.884878    2.022415   0.368960  \n",
       "4   0.314605   0.272262    0.235617   7.512709  "
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.concat([predictors,pd.DataFrame(Y,columns = ['Y'])],axis = 1)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n"
     ]
    }
   ],
   "source": [
    "result_fwd = forward_stepwise_selection(data,'Y')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>numb_features</th>\n",
       "      <th>R_squared</th>\n",
       "      <th>AIC</th>\n",
       "      <th>BIC</th>\n",
       "      <th>adj_r2</th>\n",
       "      <th>features</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.819633</td>\n",
       "      <td>492.118982</td>\n",
       "      <td>497.329322</td>\n",
       "      <td>0.817793</td>\n",
       "      <td>[X1]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>0.922965</td>\n",
       "      <td>409.046022</td>\n",
       "      <td>416.861533</td>\n",
       "      <td>0.921376</td>\n",
       "      <td>[X1, X2]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0.980175</td>\n",
       "      <td>275.313877</td>\n",
       "      <td>285.734557</td>\n",
       "      <td>0.979556</td>\n",
       "      <td>[X1, X2, X3]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>0.981346</td>\n",
       "      <td>271.223347</td>\n",
       "      <td>284.249198</td>\n",
       "      <td>0.980561</td>\n",
       "      <td>[X1, X2, X3, X6]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.981413</td>\n",
       "      <td>272.863273</td>\n",
       "      <td>288.494294</td>\n",
       "      <td>0.980425</td>\n",
       "      <td>[X1, X2, X3, X6, X10]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>0.981497</td>\n",
       "      <td>274.414314</td>\n",
       "      <td>292.650506</td>\n",
       "      <td>0.980303</td>\n",
       "      <td>[X1, X2, X3, X6, X10, X4]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>0.981718</td>\n",
       "      <td>275.210066</td>\n",
       "      <td>296.051427</td>\n",
       "      <td>0.980327</td>\n",
       "      <td>[X1, X2, X3, X6, X10, X4, X8]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>0.981722</td>\n",
       "      <td>277.190336</td>\n",
       "      <td>300.636868</td>\n",
       "      <td>0.980115</td>\n",
       "      <td>[X1, X2, X3, X6, X10, X4, X8, X9]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>0.981743</td>\n",
       "      <td>279.076446</td>\n",
       "      <td>305.128148</td>\n",
       "      <td>0.979917</td>\n",
       "      <td>[X1, X2, X3, X6, X10, X4, X8, X9, X7]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>0.982118</td>\n",
       "      <td>278.997310</td>\n",
       "      <td>307.654182</td>\n",
       "      <td>0.980109</td>\n",
       "      <td>[X1, X2, X3, X6, X10, X4, X8, X9, X7, X5]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   numb_features  R_squared         AIC         BIC    adj_r2  \\\n",
       "0              1   0.819633  492.118982  497.329322  0.817793   \n",
       "1              2   0.922965  409.046022  416.861533  0.921376   \n",
       "2              3   0.980175  275.313877  285.734557  0.979556   \n",
       "3              4   0.981346  271.223347  284.249198  0.980561   \n",
       "4              5   0.981413  272.863273  288.494294  0.980425   \n",
       "5              6   0.981497  274.414314  292.650506  0.980303   \n",
       "6              7   0.981718  275.210066  296.051427  0.980327   \n",
       "7              8   0.981722  277.190336  300.636868  0.980115   \n",
       "8              9   0.981743  279.076446  305.128148  0.979917   \n",
       "9             10   0.982118  278.997310  307.654182  0.980109   \n",
       "\n",
       "                                    features  \n",
       "0                                       [X1]  \n",
       "1                                   [X1, X2]  \n",
       "2                               [X1, X2, X3]  \n",
       "3                           [X1, X2, X3, X6]  \n",
       "4                      [X1, X2, X3, X6, X10]  \n",
       "5                  [X1, X2, X3, X6, X10, X4]  \n",
       "6              [X1, X2, X3, X6, X10, X4, X8]  \n",
       "7          [X1, X2, X3, X6, X10, X4, X8, X9]  \n",
       "8      [X1, X2, X3, X6, X10, X4, X8, X9, X7]  \n",
       "9  [X1, X2, X3, X6, X10, X4, X8, X9, X7, X5]  "
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_fwd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_results(result_fwd)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# in this case, best model is model with 4 features, for all the three metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def backward_stepwise_selection(data, target):\n",
    "    features =  [col for col in data.columns if not col == target]\n",
    "    total_features = []\n",
    "    list_r2 = []\n",
    "    list_adj_r2 = []\n",
    "    list_aic,list_bic = [],[]\n",
    "    len_features = []\n",
    "    while(len(features)>0):\n",
    "        features_with_constant = sm.add_constant(data[features])\n",
    "        model = sm.OLS(data[target], features_with_constant).fit()\n",
    "        max_p_value = model.pvalues[1:].max()\n",
    "        total_features.append(features.copy())\n",
    "        list_r2.append(model.rsquared)\n",
    "        list_aic.append(model.aic)\n",
    "        list_bic.append(model.bic)\n",
    "        len_features.append(len(total_features[-1]))\n",
    "        list_adj_r2.append(model.rsquared_adj)\n",
    "        excluded_feature = model.pvalues[1:].idxmax()\n",
    "        features.remove(excluded_feature)\n",
    "    return pd.DataFrame({'numb_features': len_features, 'R_squared':list_r2,\n",
    "                      'AIC':list_aic,'BIC':list_bic,'adj_r2':list_adj_r2,'features':total_features})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n"
     ]
    }
   ],
   "source": [
    "result_bwd = backward_stepwise_selection(data,'Y')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>numb_features</th>\n",
       "      <th>R_squared</th>\n",
       "      <th>AIC</th>\n",
       "      <th>BIC</th>\n",
       "      <th>adj_r2</th>\n",
       "      <th>features</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10</td>\n",
       "      <td>0.982118</td>\n",
       "      <td>278.997310</td>\n",
       "      <td>307.654182</td>\n",
       "      <td>0.980109</td>\n",
       "      <td>[X1, X2, X3, X4, X5, X6, X7, X8, X9, X10]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>9</td>\n",
       "      <td>0.982049</td>\n",
       "      <td>277.384221</td>\n",
       "      <td>303.435923</td>\n",
       "      <td>0.980254</td>\n",
       "      <td>[X1, X2, X4, X5, X6, X7, X8, X9, X10]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>0.981940</td>\n",
       "      <td>275.989785</td>\n",
       "      <td>299.436317</td>\n",
       "      <td>0.980352</td>\n",
       "      <td>[X1, X2, X4, X5, X6, X7, X8, X9]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7</td>\n",
       "      <td>0.981844</td>\n",
       "      <td>274.521879</td>\n",
       "      <td>295.363241</td>\n",
       "      <td>0.980462</td>\n",
       "      <td>[X1, X2, X4, X5, X6, X7, X9]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6</td>\n",
       "      <td>0.981764</td>\n",
       "      <td>272.962058</td>\n",
       "      <td>291.198249</td>\n",
       "      <td>0.980587</td>\n",
       "      <td>[X1, X2, X5, X6, X7, X9]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>5</td>\n",
       "      <td>0.980788</td>\n",
       "      <td>276.172489</td>\n",
       "      <td>291.803510</td>\n",
       "      <td>0.979766</td>\n",
       "      <td>[X1, X2, X5, X6, X7]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>4</td>\n",
       "      <td>0.980037</td>\n",
       "      <td>278.006463</td>\n",
       "      <td>291.032314</td>\n",
       "      <td>0.979197</td>\n",
       "      <td>[X1, X2, X5, X7]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>3</td>\n",
       "      <td>0.977367</td>\n",
       "      <td>288.559405</td>\n",
       "      <td>298.980086</td>\n",
       "      <td>0.976660</td>\n",
       "      <td>[X1, X2, X5]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2</td>\n",
       "      <td>0.922965</td>\n",
       "      <td>409.046022</td>\n",
       "      <td>416.861533</td>\n",
       "      <td>0.921376</td>\n",
       "      <td>[X1, X2]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>1</td>\n",
       "      <td>0.819633</td>\n",
       "      <td>492.118982</td>\n",
       "      <td>497.329322</td>\n",
       "      <td>0.817793</td>\n",
       "      <td>[X1]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   numb_features  R_squared         AIC         BIC    adj_r2  \\\n",
       "0             10   0.982118  278.997310  307.654182  0.980109   \n",
       "1              9   0.982049  277.384221  303.435923  0.980254   \n",
       "2              8   0.981940  275.989785  299.436317  0.980352   \n",
       "3              7   0.981844  274.521879  295.363241  0.980462   \n",
       "4              6   0.981764  272.962058  291.198249  0.980587   \n",
       "5              5   0.980788  276.172489  291.803510  0.979766   \n",
       "6              4   0.980037  278.006463  291.032314  0.979197   \n",
       "7              3   0.977367  288.559405  298.980086  0.976660   \n",
       "8              2   0.922965  409.046022  416.861533  0.921376   \n",
       "9              1   0.819633  492.118982  497.329322  0.817793   \n",
       "\n",
       "                                    features  \n",
       "0  [X1, X2, X3, X4, X5, X6, X7, X8, X9, X10]  \n",
       "1      [X1, X2, X4, X5, X6, X7, X8, X9, X10]  \n",
       "2           [X1, X2, X4, X5, X6, X7, X8, X9]  \n",
       "3               [X1, X2, X4, X5, X6, X7, X9]  \n",
       "4                   [X1, X2, X5, X6, X7, X9]  \n",
       "5                       [X1, X2, X5, X6, X7]  \n",
       "6                           [X1, X2, X5, X7]  \n",
       "7                               [X1, X2, X5]  \n",
       "8                                   [X1, X2]  \n",
       "9                                       [X1]  "
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_bwd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_results(result_bwd)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (e) Now fit a lasso model to the simulated data, again using X, X2, ...,X10 as predictors. Use cross-validation to select the optimal value of λ. Create plots of the cross-validation error as a function of λ. Report the resulting coefficient estimates, and discuss the results obtained.\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X1</th>\n",
       "      <th>X2</th>\n",
       "      <th>X3</th>\n",
       "      <th>X4</th>\n",
       "      <th>X5</th>\n",
       "      <th>X6</th>\n",
       "      <th>X7</th>\n",
       "      <th>X8</th>\n",
       "      <th>X9</th>\n",
       "      <th>X10</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.624345</td>\n",
       "      <td>2.638498</td>\n",
       "      <td>4.285832</td>\n",
       "      <td>6.961671</td>\n",
       "      <td>11.308158</td>\n",
       "      <td>18.368354</td>\n",
       "      <td>29.836551</td>\n",
       "      <td>48.464863</td>\n",
       "      <td>78.723675</td>\n",
       "      <td>127.874436</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.611756</td>\n",
       "      <td>0.374246</td>\n",
       "      <td>-0.228947</td>\n",
       "      <td>0.140060</td>\n",
       "      <td>-0.085683</td>\n",
       "      <td>0.052417</td>\n",
       "      <td>-0.032066</td>\n",
       "      <td>0.019617</td>\n",
       "      <td>-0.012001</td>\n",
       "      <td>0.007342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.528172</td>\n",
       "      <td>0.278965</td>\n",
       "      <td>-0.147342</td>\n",
       "      <td>0.077822</td>\n",
       "      <td>-0.041103</td>\n",
       "      <td>0.021710</td>\n",
       "      <td>-0.011466</td>\n",
       "      <td>0.006056</td>\n",
       "      <td>-0.003199</td>\n",
       "      <td>0.001689</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.072969</td>\n",
       "      <td>1.151262</td>\n",
       "      <td>-1.235268</td>\n",
       "      <td>1.325403</td>\n",
       "      <td>-1.422116</td>\n",
       "      <td>1.525886</td>\n",
       "      <td>-1.637228</td>\n",
       "      <td>1.756694</td>\n",
       "      <td>-1.884878</td>\n",
       "      <td>2.022415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.865408</td>\n",
       "      <td>0.748930</td>\n",
       "      <td>0.648130</td>\n",
       "      <td>0.560897</td>\n",
       "      <td>0.485404</td>\n",
       "      <td>0.420073</td>\n",
       "      <td>0.363534</td>\n",
       "      <td>0.314605</td>\n",
       "      <td>0.272262</td>\n",
       "      <td>0.235617</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         X1        X2        X3        X4         X5         X6         X7  \\\n",
       "0  1.624345  2.638498  4.285832  6.961671  11.308158  18.368354  29.836551   \n",
       "1 -0.611756  0.374246 -0.228947  0.140060  -0.085683   0.052417  -0.032066   \n",
       "2 -0.528172  0.278965 -0.147342  0.077822  -0.041103   0.021710  -0.011466   \n",
       "3 -1.072969  1.151262 -1.235268  1.325403  -1.422116   1.525886  -1.637228   \n",
       "4  0.865408  0.748930  0.648130  0.560897   0.485404   0.420073   0.363534   \n",
       "\n",
       "          X8         X9         X10  \n",
       "0  48.464863  78.723675  127.874436  \n",
       "1   0.019617  -0.012001    0.007342  \n",
       "2   0.006056  -0.003199    0.001689  \n",
       "3   1.756694  -1.884878    2.022415  \n",
       "4   0.314605   0.272262    0.235617  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# predictors contain the dataframe for all the X's, response is stored in Y dataframe\n",
    "predictors.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "alpha_list = 10**np.linspace(-5,3,100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "def run_lasso(X,y,alpha_list):\n",
    "    \"\"\"\n",
    "    Input - \n",
    "       X - predictors\n",
    "       y - response\n",
    "       alpha_list - list of parameter for lasso - alpha\n",
    "    Returns - \n",
    "       coeff dict - dict of alpha - coeffs \n",
    "       cv_error_list - list of cross val errors\n",
    "    \"\"\"\n",
    "    coeff_dict = {}\n",
    "    cv_error_list = []\n",
    "    for alpha in alpha_list:\n",
    "        lasso = Lasso(alpha = alpha)\n",
    "        lasso.fit(X,y)\n",
    "        coeff_dict[alpha] = list(lasso.coef_)\n",
    "        cv_error_list.append(-np.mean(cross_val_score(lasso,X,y,cv = 10,scoring = 'neg_mean_squared_error')))\n",
    "    return coeff_dict,cv_error_list     "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.57639870738661, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.469447623660855, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.865601371991836, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.17858285395568, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.8007461175815, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.20554521937487, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.187617743265456, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.22395851139677, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.65106085645603, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.186270491251044, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.061209807019644, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.574391105030635, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.46570225659025, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.86324340168992, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.17653366137165, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.79906704380775, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.205512304221564, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.186819456444454, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.22418116579588, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.65031520924144, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.183662965251735, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.059024429682665, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.57197109595435, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.461197761851956, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.860401568260585, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.174063445463986, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.79704308911556, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.20547193276201, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.18585709068397, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.22444862730282, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.64941617320257, tolerance: 0.40733603065102236\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.18051953718882, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.056389169057205, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.56905350817338, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.45578194724432, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.856976127910315, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.171085221693936, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.7946030446736, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.2054222527439, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.18469671824547, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.22476973083944, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.648331972931935, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.176729413565525, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.05321068057088, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.56553534268248, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.44927285823343, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.85284665571096, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.16749381704075, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.79166083193982, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.20536088511075, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.183297304564746, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.22515496952711, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.64702415106051, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.1721585999719, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.04937592185628, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.56129208471123, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.44145329455689, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.84786762059245, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.16316196908091, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.78811232253844, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.205284749235865, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.18160917868723, tolerance: 0.4181914807326185\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.225616782947014, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.64544611856244, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.16664490968243, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.044747847477986, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.55617286441187, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.432064469464414, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.84186290768149, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.157935544785786, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.78383144450399, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.20518977598089, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.17957215637241, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.22616983089195, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.64354137104698, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.15999183889105, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.03916009632089, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.54999361316113, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.420798749521225, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.83461950275274, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.15162673705547, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.77866575405439, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.205070747795205, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.17711322913764, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.226831267228505, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.64124122005971, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.151959962040486, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.03240955009094, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.542534541167456, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.40729144708395, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.82587917715832, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.14401025472626, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.77242919664903, tolerance: 0.39010026426124206\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.20492058112583, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.174143707597764, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.227621120892366, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.63846071536581, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.14226156493203, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.02425135431118, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.53352489655954, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.391111696909014, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.81532873113399, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.13480944907722, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.764896733435656, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.20472985743662, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.17055567412757, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.228562611953336, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.63510089557803, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.130543471673604, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.014384051829126, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.52263611318662, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.371752544110564, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.80258770116367, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.1236881769613, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.75579331632353, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.204485745429295, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.16621526498425, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.229682210412776, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.63103616026588, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.11637665409173, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.00243952226008, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.50946726739528, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.34862051782939, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.78719330426817, tolerance: 0.3907288014113704\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.11023600676564, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.74478367169916, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.204170880281, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.16096573440267, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.23100987152215, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.626114273247666, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.09923509592518, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.987963742078335, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.493527816308465, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.32102518259481, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.76858081396621, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.09394716424911, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.73146111857621, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.20376126566662, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.15460815393698, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.232575747218476, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.62014819003734, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.07847185438803, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.970403300076875, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.474210743998675, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.28817034940898, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.74606111909055, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.07421012061345, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.71532206903983, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.203219436175516, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.14690132985371, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.23442000963542, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.61290547615884, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.05330213329905, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.94906388674378, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.45078320508403, tolerance: 0.4278019603903341\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.24914350639869, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.7187882075502, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.050261618251426, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.69574361036609, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.202506639036734, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.13754436358989, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.23657626471552, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.60410034300976, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.02273868365155, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.9230893153753, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.422317671335165, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.20291577747124, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.685723892542946, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.021151921895004, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.67196883419037, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.2015543124611, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.12616073017903, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.23907699952871, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.59338123999924, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.9855821366557, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.89141059373324, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.38768285878334, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.14834230452526, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.64558476512459, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.98571123847584, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.643046975334705, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.200270132466535, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.11230102200485, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.24194841067102, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.58029256736734, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.94029909310117, tolerance: 0.4189551438661615\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.85266454213941, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.345438105515065, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.08417518533075, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.59678107505342, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.94248518427246, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.607779535981955, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.198514076998514, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.095369679986, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.245206421187916, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.56428850922868, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.88499475669672, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.80512586890934, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.29381372385371, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.00422814997372, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.537330892594376, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.889591855117825, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.56468381123248, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.196115166424775, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.07465645829193, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.24882462684543, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.54463710608695, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.8172616370033, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.746601749373305, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.23049633296063, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.91877929834793, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.464752908839166, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.824686881002478, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.51187946458671, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.19278333929174, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.04920651290121, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.25274029997119, tolerance: 0.3060524076466068\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.52043367124894, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.73399470388131, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.674207950906535, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.152584148988396, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.82010759891867, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.375907675908195, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.744703196146872, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.44692364554974, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.19018323350213, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.017838576831615, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.256805256760444, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.49049231514433, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.63124903895341, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.58419027662954, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.056249310744995, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.70708741679275, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.26680952454681, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.645780966416382, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.36668548245176, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.184443110663025, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.97901271818516, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.260734098917816, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.453274619077206, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.5037718650911, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.47151467947933, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.93664701138477, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.579210465431636, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.13235008408643, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.522647930319135, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.26713941658973, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.176369754769226, tolerance: 0.3320965944964175\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.930705588597835, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.264028589734004, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.40677497918962, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.34467357848896, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.32940608319614, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.78708870650275, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.4365181182027, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.96592199766098, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.368333854695216, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.142778929647584, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.16498062893106, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.870257082581354, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.265833884450494, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.34822477711133, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.144568615359184, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.14847961500908, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.5986651633166, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.27981624670643, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.75832557001202, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.173620989981355, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.98639999007693, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.14880080500761, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.794003254768896, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.2647494363694, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.273999411515746, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.89043611503056, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.9155707355748, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.359385556162024, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.11113252950476, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.49678448171356, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.9252049688685, tolerance: 0.41265185424920947\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.78792440021099, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.125593156670185, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.697136361016543, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.2584612592771, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.178947719680686, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.52990347810364, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.61171398226941, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.05174348229423, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.933957578499665, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.166082705328236, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.604772047138155, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.533553471162506, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.09208856563165, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.57277198244448, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.243265965461575, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.056147118529445, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.08399417892153, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.20909008130054, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.65151107645385, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.753381048516445, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.74553590992947, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.18518660865986, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.20345968672002, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.04333072328765, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.411562517245276, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.21299991007753, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.89557942387769, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.48300668136388, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.665958248923122, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.12208603007011, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.576417632982476, tolerance: 0.3557536841335408\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.22731622994252, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.62590645582146, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.768163803390294, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.97174307344973, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.19977752315551, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.157543188978586, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.70154973221588, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.650314482822324, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.9186598891323, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.40788918184005, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.41200608736349, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.606997241284112, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.86323303710719, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.183610132672456, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.865682100025886, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.91775440554077, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.05977445348136, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.45065068262457, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.4564326000128, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.87336597007578, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.561561808883226, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.27143540972146, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.700219466062332, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.79296203205154, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.19242024850412, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.706792385626, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.53503051406477, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.88986123768631, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.09041671040802, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.652338162599335, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.50277615124724, tolerance: 0.4153074380774272\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.34256052521985, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.16751415702671, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.455270278023356, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.249925719895774, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.909375784123544, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.46552208908093, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.87254909831457, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.836344554777, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.59158694182645, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.681168344644085, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.661843330860624, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.490833671210524, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.64375827893217, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.669138429968683, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 26.447520263985144, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.898662670171817, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.09285897426068, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.111424891716332, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.48731692093488, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.88751278722598, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 24.474134131758213, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.243608314619035, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.534806254615035, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.09962311610821, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 25.263546192953292, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 26.136063599642192, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 25.483394502933372, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 36.503382284761514, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.04976948842873, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.876177086216686, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.8590516969711, tolerance: 0.40733603065102236\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 21.922832330231298, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.296120050987987, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.251302843358367, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.80927027719704, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 23.54930898675282, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 25.651288417832173, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 22.160065481919446, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.53535381507541, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 26.2636272951271, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.069548287987594, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.285854320856586, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 19.61864079155792, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.15465447790124, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 25.194645638798363, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.652865812484016, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 21.674054150853497, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 22.67686127524739, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 20.861002482073935, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.85340342579138, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 23.692320604837896, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.94203269199156, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.65776371039981, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 17.647570735606244, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.525998723600495, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 22.908555363689196, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.02202354842339, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 19.586330628957604, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 20.28335394696932, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 19.113923076561676, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.55533495963533, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 22.155985883926643, tolerance: 0.4181914807326185\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.88506529421492, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 26.077432312786485, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 16.901988076035707, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 26.92169985857463, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 20.425935316131337, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.912283750998867, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 17.27985377919297, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 16.870271587754413, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 17.227330149748845, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.02282836550923, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 20.404545148279784, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.93438676899426, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 24.348373728066065, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 21.61252459246334, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 26.3720866315404, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 17.76004421888177, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.860583986242595, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 14.762497658481358, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 14.0223785961509, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 15.39056352154751, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.562801966844642, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 18.433493875112667, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.83907030002562, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 22.376677075526665, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 22.850783406561938, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 25.910464649131377, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 14.590432378902392, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.911594946368584, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 12.233961398124052, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 10.923748003907956, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 13.957837775164649, tolerance: 0.39010026426124206\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.22485696101608, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 16.260686552669235, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.58406116303376, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 20.15009076410763, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 20.247776581419842, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 22.28242972920615, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 12.212351098780658, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.20136605341912, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 8.877244917805626, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 13.283491565157831, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 14.620306474297323, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.086090355503273, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 13.958927268622297, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.440155053903304, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 17.375649428106655, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 19.780729119787807, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 21.315281982781798, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 13.60717627342153, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.902268430117168, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6.039562534750331, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 15.092712263212597, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 21.466285676491573, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.524196911060848, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.12953506605178, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.63529683780526, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 14.568538985342293, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 17.63512973223008, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 19.61769477171525, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 21.417510318720296, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.25634111739461, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 3.4619068715830608, tolerance: 0.3907288014113704\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 12.836528882615465, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 19.61082019528148, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.57430774541161, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 9.576199341323715, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.660385703897276, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.479232868177654, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 14.784167286869284, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 17.806760816880796, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 18.984674495516707, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 20.218217258004934, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 8.345266318568136, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.543419634048874, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 16.89465230470212, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.12884455069732, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 20.147285609544824, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.563421209812844, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 8.242762298052568, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 12.215270600071939, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 15.885195587816135, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 16.313561776906674, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 13.50829037013456, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.816457489640683, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 9.06748338930717, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 14.473023541756945, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.7727323693412, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 18.41957936474793, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.31362448316253, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 7.229561020067095, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 9.480919665641103, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 13.090354037963237, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 13.372590318388177, tolerance: 0.4278019603903341\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.741918880895547, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 9.410972533198041, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 5.449778800757073, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.661568807989468, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.008651975047304, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 16.003295303857065, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.945029349129875, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 17.286774119710635, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6.5799440525506085, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 10.525226561460016, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 10.098795123306111, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.246192745785933, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6.781628728405565, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 8.521256129409025, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.67146561104271, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 13.116114407193777, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.39837357118429, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 14.275361841051321, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 3.46534602682749, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 7.638915029969411, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6.389759064174825, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 10.841627554594062, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 3.85169970482373, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 4.9584632197028995, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 25.5110066589844, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 9.629950023715779, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.58853534559433, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 10.711246802416952, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.5026276441330566, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 4.353175834001853, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.105874032235022, tolerance: 0.4278019603903341\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 10.500290895233647, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.7644176238729443, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.8443686273391506, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 21.315275033982637, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 5.386487716513919, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.40002965364103, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6.444945901025157, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.606206800124852, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 3.3722370736092273, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.8837400678272758, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 9.997135706900032, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.5059820591925757, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.8944455763010524, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.0289859001292854, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 16.80315088681298, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.532874948077108, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.679672225811956, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.3028179192612583, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.1501221856933057, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 3.776526820741978, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.3764994885323176, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 3.773496912982651, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.7879815770011191, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.5026934051085732, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.5368340261784965, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.02454443446021, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.5486276566507229, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.24098394361007, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.7738385370101213, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.7474354001738277, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 4.217513267469087, tolerance: 0.4153074380774272\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.8949336126442944, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.969041515590874, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.095376409728118, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.201482703017973, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.073731046521118, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 3.7582807516473196, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.5544534631499403, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.55306279981356, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.1511520878705426, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.04812620572325, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.9294154425517434, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.150896632662551, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 7.357211807107689, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.4235710099634247, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.755130036651579, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 4.589871806534063, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 17.45118727287955, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6.590356129765439, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 8.176980857636053, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.5613879940737405, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 8.206324799156107, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 12.50901335755249, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 14.450926230851891, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 5.766033431895252, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 5.227063667818342, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 10.692731500352082, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 13.086691976242562, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.00674958153975, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 15.254280350892856, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 22.049153003525703, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 5.412657461363025, tolerance: 0.40733603065102236\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 17.451395047341236, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 20.771663275951994, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 23.448195322193882, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 7.12447030347316, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 16.116651262891338, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 20.878873351598813, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 21.33277087022975, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 40.12071439454118, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 23.73694965336803, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.65882266548323, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 15.00106836608937, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 26.150603459351203, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.785601213346226, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.38072884327083, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.1532652454768026, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 24.930899121772924, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.46349035450467, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.608722684625945, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 41.32039303794134, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.24540164286255, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 24.0100099045966, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.872185651136704, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.73367641326942, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 12.3749302067788, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 5.069848621108434, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.64831147277495, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 39.853268331284184, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.73874781307434, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.611980502003107, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.54037106423394, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 12.48939827048946, tolerance: 0.4189551438661615\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.5276710461818652, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.540128808982985, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 10.54907453773859, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.5990341974764704, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 10.850487622813773, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 3.401561525811502, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.5946191549653292, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 22.03876227329576, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.905574159004175, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 8.83596236943859, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.5513261896666961, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.903831253640817, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 10.488026247505985, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 41.30410747993025, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 8.760987002952305, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 50.42742564091327, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 11.541651781838993, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 12.871988165008162, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.098952600104553, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.6871389148288642, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 19.62744132861863, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 21.922651144572853, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.421434184832975, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 59.725188887054685, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 26.461120035302258, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 71.48931871336106, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 9.444867617674163, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.263936150708986, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.757493520616237, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 47.488009931476256, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 37.03548989684967, tolerance: 0.3907288014113704\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 38.70304974163895, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 44.69603363063004, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 77.00909651487461, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 42.57511124877465, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 90.84968939194536, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.05418781178804, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 47.49174763081436, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 48.9882861882098, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 63.21930213483961, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.082086380882515, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 51.66707749549542, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 52.66668281421306, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 58.554374793475205, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 92.15723868567963, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 56.397208439092765, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 107.3783990488989, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 42.31602199123637, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 62.58112073731161, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 63.86001833559129, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 74.4749319025043, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 61.87989106269731, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 62.09387416299762, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 68.30284188193929, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 103.23234036873538, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 66.30304878170557, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 118.85990126264383, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 53.87022551849151, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 73.99209194393967, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 74.7266085370675, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 78.08209985651831, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 64.69468368594835, tolerance: 0.3907288014113704\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 63.95095857473456, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 71.01769221929328, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 106.96269685650043, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 69.48390129374638, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 121.51987144596109, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 59.16672981042075, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 79.00047955029265, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 78.69064063757031, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 77.97778686934822, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 67.66424107513905, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 67.54966053644773, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 70.74190645268607, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 103.69476235679446, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 70.26648919881302, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 121.56801198459738, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 61.08918110533921, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 77.42010427279479, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 77.8160199154928, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 82.07467833242674, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 6.900111473040965, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 53.11904281707598, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 72.42419188574797, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 74.3109505612249, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 40.24066253655144, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 75.03845355663361, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 66.51800025369744, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 67.21352013278363, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 81.18100072332868, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 81.33425300933231, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 22.561040903756748, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 13.707047088517811, tolerance: 0.3557536841335408\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 23.053011687675962, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 46.10555208524431, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 18.478797250273715, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.295544206295858, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 46.35020328949463, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 54.8512682059893, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 72.10688528193498, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 25.904335583559146, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 25.30186481609485, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.86917677771112, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 12.572120339030107, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 30.07557842953088, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 35.03969661984172, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.191190374241273, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 34.84234025040723, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.8404385379456, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 45.15315550836635, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.153942954550757, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.950378052933388, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.07923530444805, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 27.522675450063502, tolerance: 0.4278019603903341\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.5438398086209872, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 15.900807282831693, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.39997395969226, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 25.542692310915072, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 29.60618595403946, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 33.09777691802003, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 3.9153994795632343, tolerance: 0.3060524076466068\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 28.154904464367974, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 32.5677339053434, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 31.752984783746456, tolerance: 0.4153074380774272\n",
      "  positive)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.0624021691214693, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.8366337266386381, tolerance: 0.3907288014113704\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.0312252105564994, tolerance: 0.41265185424920947\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.6884401170010506, tolerance: 0.39010026426124206\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.1610755905726364, tolerance: 0.3320965944964175\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.096017664792953, tolerance: 0.4181914807326185\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.890877979607467, tolerance: 0.40733603065102236\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 2.2972494208100898, tolerance: 0.4189551438661615\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 1.5511158629094552, tolerance: 0.4153074380774272\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 4.487784552243738, tolerance: 0.3557536841335408\n",
      "  positive)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\linear_model\\coordinate_descent.py:475: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Duality gap: 0.4175944814264767, tolerance: 0.40733603065102236\n",
      "  positive)\n"
     ]
    }
   ],
   "source": [
    "coeff_dict,cv_error_list = run_lasso(predictors,Y,alpha_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Analyzing the coefficients\n",
    "tmp = pd.DataFrame(coeff_dict).T\n",
    "tmp.index = alpha_list\n",
    "tmp.head()\n",
    "\n",
    "plt.figure(figsize = (16,8))\n",
    "sns.lineplot(data = tmp, dashes=False)\n",
    "plt.axhline(y = 0,linestyle = 'dashed',lw = 0.1,color = 'black')\n",
    "plt.xticks(alpha_list)\n",
    "plt.ylabel('Coeffients',fontsize = 14)\n",
    "plt.xlabel('Alpha')\n",
    "plt.legend(loc='right')\n",
    "plt.xscale('log')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Cross validation error\n",
    "plt.plot(alpha_list,cv_error_list)\n",
    "plt.xscale('log')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# FOr cv, we can use a built finction LassoCV"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoCV.html"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# Using lassoCV\n",
    "# we just need to pass number of alphas, it automatically chooses the list of alphas to be considerd for normalization\n",
    "# Since, we have only 100 observations, we are going to set a high number of iterations\n",
    "\n",
    "lasso_cv = LassoCV(alphas = alpha_list,normalize = True,max_iter = 100000)\n",
    "lasso_cv.fit(predictors,Y)\n",
    "\n",
    "alphas_used = lasso_cv.alphas_\n",
    "mse_cv = np.mean(lasso_cv.mse_path_,axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(alphas_used,mse_cv)\n",
    "plt.plot(lasso_cv.alpha_,min(mse_cv),marker = 'o',color = 'red',markersize = 8)\n",
    "plt.xlabel('Alpha')\n",
    "plt.ylabel('k fold MSE')\n",
    "plt.xscale('log')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Intercept    3.309856\n",
      "X1           3.904648\n",
      "X2           1.519800\n",
      "X3           1.095322\n",
      "X4           0.093102\n",
      "X5           0.000000\n",
      "X6           0.006225\n",
      "X7           0.000000\n",
      "X8           0.000000\n",
      "X9           0.000000\n",
      "X10          0.000000\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# Model Selected \n",
    "\n",
    "print(pd.Series(np.hstack([lasso_cv.intercept_,lasso_cv.coef_]),index = ['Intercept']+['X' + str(i) for i in range(1,11)]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# this is our stimualted data - beta = [3,4,2,1]\n",
    "# our model predicted - [3.3,3.9,1.5,1.09]\n",
    "# this is very clase to the real coefficients"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (f) Now generate a response vector Y according to the model, and perform best subset selection and the lasso. Discuss the results obtained."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Y = β0 + β7X7 + eps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100,)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "beta = [0.5,2]\n",
    "Y =  beta[0] + beta[1]*X**7 + np.random.randn(100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X1</th>\n",
       "      <th>X2</th>\n",
       "      <th>X3</th>\n",
       "      <th>X4</th>\n",
       "      <th>X5</th>\n",
       "      <th>X6</th>\n",
       "      <th>X7</th>\n",
       "      <th>X8</th>\n",
       "      <th>X9</th>\n",
       "      <th>X10</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.624345</td>\n",
       "      <td>2.638498</td>\n",
       "      <td>4.285832</td>\n",
       "      <td>6.961671</td>\n",
       "      <td>11.308158</td>\n",
       "      <td>18.368354</td>\n",
       "      <td>29.836551</td>\n",
       "      <td>48.464863</td>\n",
       "      <td>78.723675</td>\n",
       "      <td>127.874436</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.611756</td>\n",
       "      <td>0.374246</td>\n",
       "      <td>-0.228947</td>\n",
       "      <td>0.140060</td>\n",
       "      <td>-0.085683</td>\n",
       "      <td>0.052417</td>\n",
       "      <td>-0.032066</td>\n",
       "      <td>0.019617</td>\n",
       "      <td>-0.012001</td>\n",
       "      <td>0.007342</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.528172</td>\n",
       "      <td>0.278965</td>\n",
       "      <td>-0.147342</td>\n",
       "      <td>0.077822</td>\n",
       "      <td>-0.041103</td>\n",
       "      <td>0.021710</td>\n",
       "      <td>-0.011466</td>\n",
       "      <td>0.006056</td>\n",
       "      <td>-0.003199</td>\n",
       "      <td>0.001689</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.072969</td>\n",
       "      <td>1.151262</td>\n",
       "      <td>-1.235268</td>\n",
       "      <td>1.325403</td>\n",
       "      <td>-1.422116</td>\n",
       "      <td>1.525886</td>\n",
       "      <td>-1.637228</td>\n",
       "      <td>1.756694</td>\n",
       "      <td>-1.884878</td>\n",
       "      <td>2.022415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.865408</td>\n",
       "      <td>0.748930</td>\n",
       "      <td>0.648130</td>\n",
       "      <td>0.560897</td>\n",
       "      <td>0.485404</td>\n",
       "      <td>0.420073</td>\n",
       "      <td>0.363534</td>\n",
       "      <td>0.314605</td>\n",
       "      <td>0.272262</td>\n",
       "      <td>0.235617</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         X1        X2        X3        X4         X5         X6         X7  \\\n",
       "0  1.624345  2.638498  4.285832  6.961671  11.308158  18.368354  29.836551   \n",
       "1 -0.611756  0.374246 -0.228947  0.140060  -0.085683   0.052417  -0.032066   \n",
       "2 -0.528172  0.278965 -0.147342  0.077822  -0.041103   0.021710  -0.011466   \n",
       "3 -1.072969  1.151262 -1.235268  1.325403  -1.422116   1.525886  -1.637228   \n",
       "4  0.865408  0.748930  0.648130  0.560897   0.485404   0.420073   0.363534   \n",
       "\n",
       "          X8         X9         X10  \n",
       "0  48.464863  78.723675  127.874436  \n",
       "1   0.019617  -0.012001    0.007342  \n",
       "2   0.006056  -0.003199    0.001689  \n",
       "3   1.756694  -1.884878    2.022415  \n",
       "4   0.314605   0.272262    0.235617  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictors.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "764b44b4b8b24c589100ff08e59606f2",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(IntProgress(value=0, description='Loop...', max=10, style=ProgressStyle(description_width='init…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "result_subset = run_subset_selection(predictors,Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>numb_features</th>\n",
       "      <th>RSS</th>\n",
       "      <th>R_squared</th>\n",
       "      <th>AIC</th>\n",
       "      <th>BIC</th>\n",
       "      <th>adj_r2</th>\n",
       "      <th>features</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>87.210480</td>\n",
       "      <td>0.999915</td>\n",
       "      <td>274.103138</td>\n",
       "      <td>279.313479</td>\n",
       "      <td>0.999914</td>\n",
       "      <td>(X7,)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>85.826842</td>\n",
       "      <td>0.999916</td>\n",
       "      <td>274.503868</td>\n",
       "      <td>282.319379</td>\n",
       "      <td>0.999915</td>\n",
       "      <td>(X7, X9)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>85.313128</td>\n",
       "      <td>0.999917</td>\n",
       "      <td>275.903523</td>\n",
       "      <td>286.324203</td>\n",
       "      <td>0.999914</td>\n",
       "      <td>(X7, X8, X10)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>80.392727</td>\n",
       "      <td>0.999922</td>\n",
       "      <td>271.963059</td>\n",
       "      <td>284.988910</td>\n",
       "      <td>0.999918</td>\n",
       "      <td>(X2, X7, X8, X10)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>80.261680</td>\n",
       "      <td>0.999922</td>\n",
       "      <td>273.799918</td>\n",
       "      <td>289.430939</td>\n",
       "      <td>0.999918</td>\n",
       "      <td>(X2, X7, X8, X9, X10)</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   numb_features        RSS  R_squared         AIC         BIC    adj_r2  \\\n",
       "0              1  87.210480   0.999915  274.103138  279.313479  0.999914   \n",
       "1              2  85.826842   0.999916  274.503868  282.319379  0.999915   \n",
       "2              3  85.313128   0.999917  275.903523  286.324203  0.999914   \n",
       "3              4  80.392727   0.999922  271.963059  284.988910  0.999918   \n",
       "4              5  80.261680   0.999922  273.799918  289.430939  0.999918   \n",
       "\n",
       "                features  \n",
       "0                  (X7,)  \n",
       "1               (X7, X9)  \n",
       "2          (X7, X8, X10)  \n",
       "3      (X2, X7, X8, X10)  \n",
       "4  (X2, X7, X8, X9, X10)  "
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_subset.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1296x288 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_results(result_subset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.5097072351086778 [1.99892362]\n"
     ]
    }
   ],
   "source": [
    "# we can see that the first feature choosen is X7. Lets see what are the coeff for it\n",
    "model = LinearRegression()\n",
    "model.fit(predictors['X7'].to_frame(),Y)\n",
    "print(model.intercept_,model.coef_)\n",
    "# we can see how close the predicted weights are that to the real ones"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# Lasso \n",
    "lasso_cv = LassoCV(alphas = alpha_list,normalize = True,max_iter = 100000)\n",
    "lasso_cv.fit(predictors,Y)\n",
    "\n",
    "alphas_used = lasso_cv.alphas_\n",
    "mse_cv = np.mean(lasso_cv.mse_path_,axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Intercept    0.507372\n",
      "X1           0.000000\n",
      "X2          -0.000000\n",
      "X3           0.000000\n",
      "X4          -0.000000\n",
      "X5           0.426371\n",
      "X6           0.000000\n",
      "X7           1.761323\n",
      "X8           0.000000\n",
      "X9           0.029601\n",
      "X10         -0.000000\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print(pd.Series(np.hstack([lasso_cv.intercept_,lasso_cv.coef_]),index = ['Intercept']+['X' + str(i) for i in range(1,11)]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The weights of intercept and X7 here too is close to the original"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 9. In this exercise, we will predict the number of applications received using the other variables in the College data set.\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(777, 19)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>Private</th>\n",
       "      <th>Apps</th>\n",
       "      <th>Accept</th>\n",
       "      <th>Enroll</th>\n",
       "      <th>Top10perc</th>\n",
       "      <th>Top25perc</th>\n",
       "      <th>F.Undergrad</th>\n",
       "      <th>P.Undergrad</th>\n",
       "      <th>Outstate</th>\n",
       "      <th>Room.Board</th>\n",
       "      <th>Books</th>\n",
       "      <th>Personal</th>\n",
       "      <th>PhD</th>\n",
       "      <th>Terminal</th>\n",
       "      <th>S.F.Ratio</th>\n",
       "      <th>perc.alumni</th>\n",
       "      <th>Expend</th>\n",
       "      <th>Grad.Rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Abilene Christian University</td>\n",
       "      <td>Yes</td>\n",
       "      <td>1660</td>\n",
       "      <td>1232</td>\n",
       "      <td>721</td>\n",
       "      <td>23</td>\n",
       "      <td>52</td>\n",
       "      <td>2885</td>\n",
       "      <td>537</td>\n",
       "      <td>7440</td>\n",
       "      <td>3300</td>\n",
       "      <td>450</td>\n",
       "      <td>2200</td>\n",
       "      <td>70</td>\n",
       "      <td>78</td>\n",
       "      <td>18.1</td>\n",
       "      <td>12</td>\n",
       "      <td>7041</td>\n",
       "      <td>60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Adelphi University</td>\n",
       "      <td>Yes</td>\n",
       "      <td>2186</td>\n",
       "      <td>1924</td>\n",
       "      <td>512</td>\n",
       "      <td>16</td>\n",
       "      <td>29</td>\n",
       "      <td>2683</td>\n",
       "      <td>1227</td>\n",
       "      <td>12280</td>\n",
       "      <td>6450</td>\n",
       "      <td>750</td>\n",
       "      <td>1500</td>\n",
       "      <td>29</td>\n",
       "      <td>30</td>\n",
       "      <td>12.2</td>\n",
       "      <td>16</td>\n",
       "      <td>10527</td>\n",
       "      <td>56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Adrian College</td>\n",
       "      <td>Yes</td>\n",
       "      <td>1428</td>\n",
       "      <td>1097</td>\n",
       "      <td>336</td>\n",
       "      <td>22</td>\n",
       "      <td>50</td>\n",
       "      <td>1036</td>\n",
       "      <td>99</td>\n",
       "      <td>11250</td>\n",
       "      <td>3750</td>\n",
       "      <td>400</td>\n",
       "      <td>1165</td>\n",
       "      <td>53</td>\n",
       "      <td>66</td>\n",
       "      <td>12.9</td>\n",
       "      <td>30</td>\n",
       "      <td>8735</td>\n",
       "      <td>54</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Agnes Scott College</td>\n",
       "      <td>Yes</td>\n",
       "      <td>417</td>\n",
       "      <td>349</td>\n",
       "      <td>137</td>\n",
       "      <td>60</td>\n",
       "      <td>89</td>\n",
       "      <td>510</td>\n",
       "      <td>63</td>\n",
       "      <td>12960</td>\n",
       "      <td>5450</td>\n",
       "      <td>450</td>\n",
       "      <td>875</td>\n",
       "      <td>92</td>\n",
       "      <td>97</td>\n",
       "      <td>7.7</td>\n",
       "      <td>37</td>\n",
       "      <td>19016</td>\n",
       "      <td>59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Alaska Pacific University</td>\n",
       "      <td>Yes</td>\n",
       "      <td>193</td>\n",
       "      <td>146</td>\n",
       "      <td>55</td>\n",
       "      <td>16</td>\n",
       "      <td>44</td>\n",
       "      <td>249</td>\n",
       "      <td>869</td>\n",
       "      <td>7560</td>\n",
       "      <td>4120</td>\n",
       "      <td>800</td>\n",
       "      <td>1500</td>\n",
       "      <td>76</td>\n",
       "      <td>72</td>\n",
       "      <td>11.9</td>\n",
       "      <td>2</td>\n",
       "      <td>10922</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     Unnamed: 0 Private  Apps  Accept  Enroll  Top10perc  \\\n",
       "0  Abilene Christian University     Yes  1660    1232     721         23   \n",
       "1            Adelphi University     Yes  2186    1924     512         16   \n",
       "2                Adrian College     Yes  1428    1097     336         22   \n",
       "3           Agnes Scott College     Yes   417     349     137         60   \n",
       "4     Alaska Pacific University     Yes   193     146      55         16   \n",
       "\n",
       "   Top25perc  F.Undergrad  P.Undergrad  Outstate  Room.Board  Books  Personal  \\\n",
       "0         52         2885          537      7440        3300    450      2200   \n",
       "1         29         2683         1227     12280        6450    750      1500   \n",
       "2         50         1036           99     11250        3750    400      1165   \n",
       "3         89          510           63     12960        5450    450       875   \n",
       "4         44          249          869      7560        4120    800      1500   \n",
       "\n",
       "   PhD  Terminal  S.F.Ratio  perc.alumni  Expend  Grad.Rate  \n",
       "0   70        78       18.1           12    7041         60  \n",
       "1   29        30       12.2           16   10527         56  \n",
       "2   53        66       12.9           30    8735         54  \n",
       "3   92        97        7.7           37   19016         59  \n",
       "4   76        72       11.9            2   10922         15  "
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "college = pd.read_csv(r'E:\\programming\\dataset\\Into_to_statstical_learning\\College.csv')\n",
    "print(college.shape)\n",
    "college.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "college.drop('Unnamed: 0',axis = 1,inplace = True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (a) Split the data set into a training set and a test set"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "# before splitting , lets convert the cat features into numerical by one hot encoding\n",
    "college['Private'] = college['Private'].map({'Yes':1,'No':0})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(543, 17) (234, 17)\n"
     ]
    }
   ],
   "source": [
    "# now lets split into train and test\n",
    "X_train,X_test,y_train,y_test = train_test_split(college.drop('Apps',axis = 1),college['Apps'],test_size = 0.3,random_state = 0)\n",
    "print(X_train.shape,X_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (b) Fit a linear model using least squares on the training set, and report the test error obtained.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "# we wil look at this at last\n",
    "results_dict = {}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score is  0.9086043157818362\n"
     ]
    }
   ],
   "source": [
    "lin_reg = LinearRegression()\n",
    "lin_reg.fit(X_train,y_train)\n",
    "pred = lin_reg.predict(X_test)\n",
    "print('Score is ',r2_score(y_test,pred))\n",
    "results_dict['Least_squares'] = r2_score(y_test,pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (c) Fit a ridge regression model on the training set, with λ chosen by cross-validation. Report the test error obtained.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RidgeCV(alphas=array([1.00000000e-04, 1.09749877e-04, 1.20450354e-04, 1.32194115e-04,\n",
       "       1.45082878e-04, 1.59228279e-04, 1.74752840e-04, 1.91791026e-04,\n",
       "       2.10490414e-04, 2.31012970e-04, 2.53536449e-04, 2.78255940e-04,\n",
       "       3.05385551e-04, 3.35160265e-04, 3.67837977e-04, 4.03701726e-04,\n",
       "       4.43062146e-04, 4.86260158e-04, 5.33669923e-04, 5.85702082e-04,\n",
       "       6.42807312e-04, 7.05480231e-0...\n",
       "       1.70735265e-01, 1.87381742e-01, 2.05651231e-01, 2.25701972e-01,\n",
       "       2.47707636e-01, 2.71858824e-01, 2.98364724e-01, 3.27454916e-01,\n",
       "       3.59381366e-01, 3.94420606e-01, 4.32876128e-01, 4.75081016e-01,\n",
       "       5.21400829e-01, 5.72236766e-01, 6.28029144e-01, 6.89261210e-01,\n",
       "       7.56463328e-01, 8.30217568e-01, 9.11162756e-01, 1.00000000e+00]),\n",
       "        cv=None, fit_intercept=True, gcv_mode=None, normalize=True,\n",
       "        scoring=None, store_cv_values=True)"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "alphas = 10**(np.linspace(-4,0,100))\n",
    "ridge_cv = RidgeCV(alphas = alphas,normalize=True,store_cv_values=True)\n",
    "ridge_cv.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "valur of alpha choosen is  0.0041320124001153384\n"
     ]
    }
   ],
   "source": [
    "print('valur of alpha choosen is ',ridge_cv.alpha_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Ridge Regression')"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mse_values = ridge_cv.cv_values_\n",
    "#mse_values.shape\n",
    "mse_errors = np.mean(mse_values,axis = 0)\n",
    "plt.plot(ridge_cv.alphas,mse_errors)\n",
    "plt.plot(ridge_cv.alpha_,np.min(mse_errors),marker = '*',markersize = 10,color = 'red')\n",
    "plt.xscale('log')\n",
    "plt.xlabel('Alphas')\n",
    "plt.ylabel('MSE with cv = 5')\n",
    "plt.title('Ridge Regression')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 Score is  0.9028402319646018\n"
     ]
    }
   ],
   "source": [
    "pred = ridge_cv.predict(X_test)\n",
    "print('R2 Score is ',r2_score(y_test,pred))\n",
    "results_dict['Ridge'] = r2_score(y_test,pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Intercept     -418.377749\n",
      "Private       -686.576113\n",
      "Accept           1.203935\n",
      "Enroll          -0.210836\n",
      "Top10perc       49.876799\n",
      "Top25perc      -14.321659\n",
      "F.Undergrad      0.092081\n",
      "P.Undergrad      0.035984\n",
      "Outstate        -0.036489\n",
      "Room.Board       0.225146\n",
      "Books            0.036336\n",
      "Personal        -0.048860\n",
      "PhD             -8.943022\n",
      "Terminal        -5.093359\n",
      "S.F.Ratio        4.544561\n",
      "perc.alumni     -8.628554\n",
      "Expend           0.065120\n",
      "Grad.Rate       10.695085\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print(pd.Series(np.hstack([ridge_cv.intercept_,ridge_cv.coef_]),index = ['Intercept'] + list(college.drop('Apps',axis = 1).columns)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (d) Fit a lasso model on the training set, with λ chosen by crossvalidation. Report the test error obtained, along with the number of non-zero coefficient estimates."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LassoCV(alphas=array([1.00000000e-04, 1.09749877e-04, 1.20450354e-04, 1.32194115e-04,\n",
       "       1.45082878e-04, 1.59228279e-04, 1.74752840e-04, 1.91791026e-04,\n",
       "       2.10490414e-04, 2.31012970e-04, 2.53536449e-04, 2.78255940e-04,\n",
       "       3.05385551e-04, 3.35160265e-04, 3.67837977e-04, 4.03701726e-04,\n",
       "       4.43062146e-04, 4.86260158e-04, 5.33669923e-04, 5.85702082e-04,\n",
       "       6.42807312e-04, 7.05480231e-0...\n",
       "       3.59381366e-01, 3.94420606e-01, 4.32876128e-01, 4.75081016e-01,\n",
       "       5.21400829e-01, 5.72236766e-01, 6.28029144e-01, 6.89261210e-01,\n",
       "       7.56463328e-01, 8.30217568e-01, 9.11162756e-01, 1.00000000e+00]),\n",
       "        copy_X=True, cv=10, eps=0.001, fit_intercept=True, max_iter=1000,\n",
       "        n_alphas=100, n_jobs=None, normalize=True, positive=False,\n",
       "        precompute='auto', random_state=None, selection='cyclic', tol=0.0001,\n",
       "        verbose=False)"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lasso_cv = LassoCV(alphas = alphas,normalize = True,cv = 10)\n",
    "lasso_cv.fit(X_train,y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.4750810162102798"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lasso_cv.alpha_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mse_lasso = np.mean(lasso_cv.mse_path_,axis = 1)\n",
    "plt.plot(lasso_cv.alphas,mse_lasso)\n",
    "plt.axhline(y = min(mse_lasso),linewidth = 0.5,linestyle = 'dashed',color = 'r')\n",
    "plt.plot(lasso_cv.alpha_,np.min(mse_lasso),marker = 'o',markersize = 10)\n",
    "plt.xscale('log')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "# After lots of hair pulling i am still not ablet to get why this dot is not on the line, please if you can find it, \n",
    "# do leave an issue"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 score is  0.9034594192776941\n"
     ]
    }
   ],
   "source": [
    "pred = lasso_cv.predict(X_test)\n",
    "print('R2 score is ',r2_score(y_test,pred))\n",
    "results_dict['Lasso'] = r2_score(y_test,pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Intercept     -465.630008\n",
      "Private       -670.751294\n",
      "Accept           1.199801\n",
      "Enroll          -0.000000\n",
      "Top10perc       44.166457\n",
      "Top25perc       -9.580167\n",
      "F.Undergrad      0.054075\n",
      "P.Undergrad      0.030898\n",
      "Outstate        -0.025573\n",
      "Room.Board       0.205365\n",
      "Books            0.000000\n",
      "Personal        -0.018548\n",
      "PhD             -7.816703\n",
      "Terminal        -4.509051\n",
      "S.F.Ratio        0.000000\n",
      "perc.alumni     -7.671402\n",
      "Expend           0.058111\n",
      "Grad.Rate        8.396615\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print(pd.Series(np.hstack([lasso_cv.intercept_,lasso_cv.coef_]),index = ['Intercept'] + list(college.drop('Apps',axis = 1).columns)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Three coefficients are shrunk to zero."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (e) Fit a PCR model on the training set, with M chosen by crossvalidation. Report the test error obtained, along with the value of M selected by cross-validation.\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_components = np.arange(1,X_train.shape[1])\n",
    "cv_score_pcr = []\n",
    "\n",
    "for num_component in num_components:\n",
    "    scaler = StandardScaler()\n",
    "    X_scaled = scaler.fit_transform(X_train)\n",
    "    \n",
    "    pca = PCA(n_components=num_component)\n",
    "    X_pc = pca.fit_transform(X_scaled)\n",
    "    \n",
    "    lin_model = LinearRegression()\n",
    "    \n",
    "    cv_score_pcr.append(np.mean(cross_val_score(lin_model,X_pc,y_train,cv = 10)))\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'PCR')"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(num_components,cv_score_pcr,marker = 'o')\n",
    "plt.xlabel('Num of Components')\n",
    "plt.ylabel('CV with k = 10')\n",
    "plt.title('PCR')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "# The max score is for num_comp = 17, through which we will have the same model as with simple least squares\n",
    "# but, lets see what score will we get when we choose num_components = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score for pcr with num_components = 5 is  0.7659209188800955\n"
     ]
    }
   ],
   "source": [
    "scaler = StandardScaler()\n",
    "X_scaled = scaler.fit_transform(X_train)\n",
    "    \n",
    "pca = PCA(n_components=5)\n",
    "X_pc = pca.fit_transform(X_scaled)\n",
    "    \n",
    "lin_model = LinearRegression()\n",
    "lin_model.fit(X_pc,y_train)\n",
    "\n",
    "# To find the predictions for X_test, we need to scale it \n",
    "X_test_scaled = scaler.transform(X_test)\n",
    "X_test_pc = pca.transform(X_test_scaled)\n",
    "\n",
    "pred = lin_model.predict(X_test_pc)\n",
    "print('Score for pcr with num_components = 5 is ',r2_score(y_test,pred))\n",
    "# that's not good at all, we will stich with num_components = 17, which will give sane model as least squares"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score for pcr with num_components = 17 is  0.9086043157818375\n"
     ]
    }
   ],
   "source": [
    "scaler = StandardScaler()\n",
    "X_scaled = scaler.fit_transform(X_train)\n",
    "    \n",
    "pca = PCA(n_components=17)\n",
    "X_pc = pca.fit_transform(X_scaled)\n",
    "    \n",
    "lin_model = LinearRegression()\n",
    "lin_model.fit(X_pc,y_train)\n",
    "\n",
    "# To find the predictions for X_test, we need to scale it \n",
    "X_test_scaled = scaler.transform(X_test)\n",
    "X_test_pc = pca.transform(X_test_scaled)\n",
    "\n",
    "pred = lin_model.predict(X_test_pc)\n",
    "print('Score for pcr with num_components = 17 is ',r2_score(y_test,pred))\n",
    "# that's not good at all, we will stich with num_components = 17, which will give sane model as least squares\n",
    "results_dict['PCR'] = r2_score(y_test,pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (f) Fit a PLS model on the training set, with M chosen by crossvalidation. Report the test error obtained, along with the value of M selected by cross-validation.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16])"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "num_components"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_split.py:1978: FutureWarning: The default value of cv will change from 3 to 5 in version 0.22. Specify it explicitly to silence this warning.\n",
      "  warnings.warn(CV_WARNING, FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "cv_scores_pls = []\n",
    "for num_component in num_components:\n",
    "    pls = PLSRegression(n_components=num_component,scale = True)\n",
    "    cv_scores_pls.append(np.mean(cross_val_score(pls,X_train,y_train)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'PLS')"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(num_components,cv_scores_pls,marker = 'o')\n",
    "plt.xlabel('Num of components')\n",
    "plt.ylabel('Cv score - 5 fold')\n",
    "plt.title('PLS')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.9196744369090736, 9)"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max(zip(cv_scores_pls,num_components))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "# By corss validation we have num components as 9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score for PLS is  0.9083013629152911\n"
     ]
    }
   ],
   "source": [
    "# lets see how this model performs\n",
    "pls = PLSRegression(n_components=9,scale = True)\n",
    "pls.fit(X_train,y_train)\n",
    "pred = pls.predict(X_test)\n",
    "print('Score for PLS is ',r2_score(y_test,pred))\n",
    "results_dict['PLS'] = r2_score(y_test,pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (g) Comment on the results obtained. How accurately can we predict the number of college applications received? Is there much difference among the test errors resulting from these five approaches?\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Least_squares    0.908604\n",
      "Ridge            0.902840\n",
      "Lasso            0.903459\n",
      "PCR              0.908604\n",
      "PLS              0.908301\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print(pd.Series(results_dict))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We can see from above that all the methods have almost similar results"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 10. We have seen that as the number of features used in a model increases, the training error will necessarily decrease, but the test error may not. We will now explore this in a simulated data set\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (a) Generate a data set with p = 20 features, n = 1,000 observations, and an associated quantitative response vector generated according to the model. where β has some elements that are exactly equal to zero.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Y = Xβ + eps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of X is  (1000, 20)\n"
     ]
    }
   ],
   "source": [
    "X = np.random.normal(size = (1000,20))\n",
    "print('Shape of X is ',X.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  9.,   0.,   0.,   0.,   0.,   0.,  -4., -10.,   0.,   0.,  -2.,\n",
       "         1.,   0.,  -7.,   0.,   0.,   0.,  -1.,   0.,   0.])"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.random.seed(3)\n",
    "\n",
    "# we are going to select beta in such a way that half of the value contain 0\n",
    "beta = np.random.randint(-10,10,10)\n",
    "beta = np.concatenate([beta,np.zeros(10)])\n",
    "np.random.shuffle(beta)\n",
    "beta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(20, 1)"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "beta = np.expand_dims(beta,axis = 1)\n",
    "beta.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(1)\n",
    "# Y = X*Beta + eps\n",
    "# shapees - (1000,1) = (1000,20)*(20,1) + (1000,1)\n",
    "Y = np.dot(X,beta) + np.random.normal(size = (1000,1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(1000, 20)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>X_1</th>\n",
       "      <th>X_2</th>\n",
       "      <th>X_3</th>\n",
       "      <th>X_4</th>\n",
       "      <th>X_5</th>\n",
       "      <th>X_6</th>\n",
       "      <th>X_7</th>\n",
       "      <th>X_8</th>\n",
       "      <th>X_9</th>\n",
       "      <th>X_10</th>\n",
       "      <th>X_11</th>\n",
       "      <th>X_12</th>\n",
       "      <th>X_13</th>\n",
       "      <th>X_14</th>\n",
       "      <th>X_15</th>\n",
       "      <th>X_16</th>\n",
       "      <th>X_17</th>\n",
       "      <th>X_18</th>\n",
       "      <th>X_19</th>\n",
       "      <th>X_20</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.747871</td>\n",
       "      <td>0.009025</td>\n",
       "      <td>-0.878108</td>\n",
       "      <td>-0.156434</td>\n",
       "      <td>0.256570</td>\n",
       "      <td>-0.988779</td>\n",
       "      <td>-0.338822</td>\n",
       "      <td>-0.236184</td>\n",
       "      <td>-0.637655</td>\n",
       "      <td>-1.187612</td>\n",
       "      <td>-1.421217</td>\n",
       "      <td>-0.153495</td>\n",
       "      <td>-0.269057</td>\n",
       "      <td>2.231367</td>\n",
       "      <td>-2.434768</td>\n",
       "      <td>0.112727</td>\n",
       "      <td>0.370445</td>\n",
       "      <td>1.359634</td>\n",
       "      <td>0.501857</td>\n",
       "      <td>-0.844214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.000010</td>\n",
       "      <td>0.542353</td>\n",
       "      <td>-0.313508</td>\n",
       "      <td>0.771012</td>\n",
       "      <td>-1.868091</td>\n",
       "      <td>1.731185</td>\n",
       "      <td>1.467678</td>\n",
       "      <td>-0.335677</td>\n",
       "      <td>0.611341</td>\n",
       "      <td>0.047971</td>\n",
       "      <td>-0.829135</td>\n",
       "      <td>0.087710</td>\n",
       "      <td>1.000366</td>\n",
       "      <td>-0.381093</td>\n",
       "      <td>-0.375669</td>\n",
       "      <td>-0.074471</td>\n",
       "      <td>0.433496</td>\n",
       "      <td>1.278379</td>\n",
       "      <td>-0.634679</td>\n",
       "      <td>0.508396</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.216116</td>\n",
       "      <td>-1.858612</td>\n",
       "      <td>-0.419316</td>\n",
       "      <td>-0.132329</td>\n",
       "      <td>-0.039570</td>\n",
       "      <td>0.326003</td>\n",
       "      <td>-2.040323</td>\n",
       "      <td>0.046256</td>\n",
       "      <td>-0.677676</td>\n",
       "      <td>-1.439439</td>\n",
       "      <td>0.524296</td>\n",
       "      <td>0.735280</td>\n",
       "      <td>-0.653250</td>\n",
       "      <td>0.842456</td>\n",
       "      <td>-0.381516</td>\n",
       "      <td>0.066489</td>\n",
       "      <td>-1.098739</td>\n",
       "      <td>1.584487</td>\n",
       "      <td>-2.659449</td>\n",
       "      <td>-0.091453</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.695120</td>\n",
       "      <td>-2.033467</td>\n",
       "      <td>-0.189469</td>\n",
       "      <td>-0.077219</td>\n",
       "      <td>0.824703</td>\n",
       "      <td>1.248213</td>\n",
       "      <td>-0.403892</td>\n",
       "      <td>-1.384519</td>\n",
       "      <td>1.367235</td>\n",
       "      <td>1.217886</td>\n",
       "      <td>-0.462005</td>\n",
       "      <td>0.350888</td>\n",
       "      <td>0.381866</td>\n",
       "      <td>0.566275</td>\n",
       "      <td>0.204208</td>\n",
       "      <td>1.406696</td>\n",
       "      <td>-1.737960</td>\n",
       "      <td>1.040824</td>\n",
       "      <td>0.380472</td>\n",
       "      <td>-0.217135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.173531</td>\n",
       "      <td>-2.343603</td>\n",
       "      <td>1.161521</td>\n",
       "      <td>0.386078</td>\n",
       "      <td>-1.133133</td>\n",
       "      <td>0.433093</td>\n",
       "      <td>-0.304086</td>\n",
       "      <td>2.585295</td>\n",
       "      <td>1.835333</td>\n",
       "      <td>0.440690</td>\n",
       "      <td>-0.719254</td>\n",
       "      <td>-0.583415</td>\n",
       "      <td>-0.325050</td>\n",
       "      <td>-0.560235</td>\n",
       "      <td>-0.902246</td>\n",
       "      <td>-0.590972</td>\n",
       "      <td>-0.276179</td>\n",
       "      <td>-0.516884</td>\n",
       "      <td>-0.698590</td>\n",
       "      <td>-0.928892</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        X_1       X_2       X_3       X_4       X_5       X_6       X_7  \\\n",
       "0 -0.747871  0.009025 -0.878108 -0.156434  0.256570 -0.988779 -0.338822   \n",
       "1  0.000010  0.542353 -0.313508  0.771012 -1.868091  1.731185  1.467678   \n",
       "2  0.216116 -1.858612 -0.419316 -0.132329 -0.039570  0.326003 -2.040323   \n",
       "3  0.695120 -2.033467 -0.189469 -0.077219  0.824703  1.248213 -0.403892   \n",
       "4  1.173531 -2.343603  1.161521  0.386078 -1.133133  0.433093 -0.304086   \n",
       "\n",
       "        X_8       X_9      X_10      X_11      X_12      X_13      X_14  \\\n",
       "0 -0.236184 -0.637655 -1.187612 -1.421217 -0.153495 -0.269057  2.231367   \n",
       "1 -0.335677  0.611341  0.047971 -0.829135  0.087710  1.000366 -0.381093   \n",
       "2  0.046256 -0.677676 -1.439439  0.524296  0.735280 -0.653250  0.842456   \n",
       "3 -1.384519  1.367235  1.217886 -0.462005  0.350888  0.381866  0.566275   \n",
       "4  2.585295  1.835333  0.440690 -0.719254 -0.583415 -0.325050 -0.560235   \n",
       "\n",
       "       X_15      X_16      X_17      X_18      X_19      X_20  \n",
       "0 -2.434768  0.112727  0.370445  1.359634  0.501857 -0.844214  \n",
       "1 -0.375669 -0.074471  0.433496  1.278379 -0.634679  0.508396  \n",
       "2 -0.381516  0.066489 -1.098739  1.584487 -2.659449 -0.091453  \n",
       "3  0.204208  1.406696 -1.737960  1.040824  0.380472 -0.217135  \n",
       "4 -0.902246 -0.590972 -0.276179 -0.516884 -0.698590 -0.928892  "
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Converting it into a dataframe\n",
    "data = pd.DataFrame(X,columns=['X_' + str(i) for i in range(1,21)])\n",
    "print(data.shape)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (b) Split your data set into a training set containing 100 observations and a test set containing 900 observations.\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Shape of X_train and X_test are respecitively  (100, 20) (900, 20)\n"
     ]
    }
   ],
   "source": [
    "X_train,X_test,y_train,y_test = train_test_split(data,Y,test_size = 0.9,random_state = 1)\n",
    "print('Shape of X_train and X_test are respecitively ',X_train.shape,X_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (c) Perform best subset selection on the training set, and plot the training set MSE associated with the best model of each size.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 154,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_linear_reg(X,Y):\n",
    "    #Fit linear regression model and return RSS and R squared values\n",
    "    X = sm.add_constant(X)\n",
    "    model = sm.OLS(Y,X).fit()\n",
    "    return model.ssr,model.rsquared,model\n",
    "    \n",
    "\n",
    "from tqdm import tnrange, tqdm_notebook\n",
    "from itertools import combinations\n",
    "\n",
    "def run_subset_selection_with_return_models(X,y):\n",
    "    #Initialization variables\n",
    "    RSS_list, R_squared_list, feature_list = [],[],[]\n",
    "    aic_list,bic_list,adj_r_squared_list = [],[],[]\n",
    "    numb_features = []\n",
    "    list_models = []\n",
    "    list_train_mse = []\n",
    "\n",
    "    #Looping over k = 1 to k = 11 features in X\n",
    "    for k in tnrange(1,len(X.columns) + 1, desc = 'Loop...'):\n",
    "        best_features = None\n",
    "        best_RSS = None\n",
    "        best_r2 = 0\n",
    "        best_model = None\n",
    "        \n",
    "        #Looping over all possible combinations: \n",
    "        for combo in combinations(X.columns,k):\n",
    "            tmp_result = fit_linear_reg(X[list(combo)],y)   #Store temp result  \n",
    "            r2 = tmp_result[1]\n",
    "            if r2 > best_r2:\n",
    "                best_features = combo\n",
    "                best_RSS = tmp_result[0]\n",
    "                best_r2 = tmp_result[1]\n",
    "                best_model = tmp_result[2]\n",
    "                \n",
    "        RSS_list.append(best_RSS)\n",
    "        R_squared_list.append(best_r2)\n",
    "        feature_list.append(best_features)\n",
    "        numb_features.append(len(best_features))\n",
    "        aic_list.append(best_model.aic)\n",
    "        bic_list.append(best_model.bic)\n",
    "        adj_r_squared_list.append(best_model.rsquared_adj)\n",
    "        list_models.append(best_model)\n",
    "        \n",
    "    #Store in DataFrame\n",
    "    df = pd.DataFrame({'numb_features': numb_features,'RSS': RSS_list, 'R_squared':R_squared_list,\n",
    "                      'AIC':aic_list,'BIC':bic_list,'adj_r2':adj_r_squared_list,'features':feature_list})\n",
    "    return df,list_models"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 155,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6299b2f5f63d4d47bd24d53bbb048ed5",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "HBox(children=(IntProgress(value=0, description='Loop...', max=12, style=ProgressStyle(description_width='init…"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>numb_features</th>\n",
       "      <th>RSS</th>\n",
       "      <th>R_squared</th>\n",
       "      <th>AIC</th>\n",
       "      <th>BIC</th>\n",
       "      <th>adj_r2</th>\n",
       "      <th>features</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>12762.571193</td>\n",
       "      <td>0.322924</td>\n",
       "      <td>772.697892</td>\n",
       "      <td>777.908232</td>\n",
       "      <td>0.316015</td>\n",
       "      <td>(X_8,)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>6298.093642</td>\n",
       "      <td>0.665876</td>\n",
       "      <td>704.070915</td>\n",
       "      <td>711.886426</td>\n",
       "      <td>0.658986</td>\n",
       "      <td>(X_1, X_8)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>5153.605316</td>\n",
       "      <td>0.726593</td>\n",
       "      <td>686.015869</td>\n",
       "      <td>696.436550</td>\n",
       "      <td>0.718049</td>\n",
       "      <td>(X_1, X_7, X_8)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>4714.291448</td>\n",
       "      <td>0.749899</td>\n",
       "      <td>679.106079</td>\n",
       "      <td>692.131930</td>\n",
       "      <td>0.739368</td>\n",
       "      <td>(X_1, X_7, X_8, X_11)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>4579.551779</td>\n",
       "      <td>0.757047</td>\n",
       "      <td>678.206329</td>\n",
       "      <td>693.837350</td>\n",
       "      <td>0.744124</td>\n",
       "      <td>(X_1, X_7, X_8, X_9, X_11)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>4445.365488</td>\n",
       "      <td>0.764166</td>\n",
       "      <td>677.232425</td>\n",
       "      <td>695.468616</td>\n",
       "      <td>0.748951</td>\n",
       "      <td>(X_1, X_7, X_8, X_9, X_11, X_12)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>4346.412492</td>\n",
       "      <td>0.769416</td>\n",
       "      <td>676.981295</td>\n",
       "      <td>697.822656</td>\n",
       "      <td>0.751871</td>\n",
       "      <td>(X_1, X_4, X_7, X_8, X_9, X_11, X_12)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>4293.457605</td>\n",
       "      <td>0.772225</td>\n",
       "      <td>677.755454</td>\n",
       "      <td>701.201985</td>\n",
       "      <td>0.752201</td>\n",
       "      <td>(X_1, X_4, X_5, X_7, X_8, X_9, X_11, X_12)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>4253.534891</td>\n",
       "      <td>0.774343</td>\n",
       "      <td>678.821254</td>\n",
       "      <td>704.872955</td>\n",
       "      <td>0.751777</td>\n",
       "      <td>(X_1, X_4, X_5, X_6, X_7, X_8, X_9, X_11, X_12)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>4243.959417</td>\n",
       "      <td>0.774851</td>\n",
       "      <td>680.595882</td>\n",
       "      <td>709.252754</td>\n",
       "      <td>0.749553</td>\n",
       "      <td>(X_1, X_3, X_4, X_5, X_6, X_7, X_8, X_9, X_11,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11</td>\n",
       "      <td>4243.908060</td>\n",
       "      <td>0.774854</td>\n",
       "      <td>682.594672</td>\n",
       "      <td>713.856714</td>\n",
       "      <td>0.746710</td>\n",
       "      <td>(X_1, X_3, X_4, X_5, X_6, X_7, X_8, X_9, X_10,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12</td>\n",
       "      <td>4243.857074</td>\n",
       "      <td>0.774856</td>\n",
       "      <td>684.593470</td>\n",
       "      <td>718.460683</td>\n",
       "      <td>0.743802</td>\n",
       "      <td>(X_1, X_2, X_3, X_4, X_5, X_6, X_7, X_8, X_9, ...</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    numb_features           RSS  R_squared         AIC         BIC    adj_r2  \\\n",
       "0               1  12762.571193   0.322924  772.697892  777.908232  0.316015   \n",
       "1               2   6298.093642   0.665876  704.070915  711.886426  0.658986   \n",
       "2               3   5153.605316   0.726593  686.015869  696.436550  0.718049   \n",
       "3               4   4714.291448   0.749899  679.106079  692.131930  0.739368   \n",
       "4               5   4579.551779   0.757047  678.206329  693.837350  0.744124   \n",
       "5               6   4445.365488   0.764166  677.232425  695.468616  0.748951   \n",
       "6               7   4346.412492   0.769416  676.981295  697.822656  0.751871   \n",
       "7               8   4293.457605   0.772225  677.755454  701.201985  0.752201   \n",
       "8               9   4253.534891   0.774343  678.821254  704.872955  0.751777   \n",
       "9              10   4243.959417   0.774851  680.595882  709.252754  0.749553   \n",
       "10             11   4243.908060   0.774854  682.594672  713.856714  0.746710   \n",
       "11             12   4243.857074   0.774856  684.593470  718.460683  0.743802   \n",
       "\n",
       "                                             features  \n",
       "0                                              (X_8,)  \n",
       "1                                          (X_1, X_8)  \n",
       "2                                     (X_1, X_7, X_8)  \n",
       "3                               (X_1, X_7, X_8, X_11)  \n",
       "4                          (X_1, X_7, X_8, X_9, X_11)  \n",
       "5                    (X_1, X_7, X_8, X_9, X_11, X_12)  \n",
       "6               (X_1, X_4, X_7, X_8, X_9, X_11, X_12)  \n",
       "7          (X_1, X_4, X_5, X_7, X_8, X_9, X_11, X_12)  \n",
       "8     (X_1, X_4, X_5, X_6, X_7, X_8, X_9, X_11, X_12)  \n",
       "9   (X_1, X_3, X_4, X_5, X_6, X_7, X_8, X_9, X_11,...  \n",
       "10  (X_1, X_3, X_4, X_5, X_6, X_7, X_8, X_9, X_10,...  \n",
       "11  (X_1, X_2, X_3, X_4, X_5, X_6, X_7, X_8, X_9, ...  "
      ]
     },
     "execution_count": 155,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results_best_subset,best_subset_models = run_subset_selection_with_return_models(X_train.iloc[:,:12],y_train)\n",
    "results_best_subset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [],
   "source": [
    "# IT was taking too much time on my computer to run best subset selection for p = 20, hence i reduced it to 12 features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n",
      "C:\\Users\\Lenovo\\Anaconda3\\lib\\site-packages\\numpy\\core\\fromnumeric.py:2542: FutureWarning: Method .ptp is deprecated and will be removed in a future version. Use numpy.ptp instead.\n",
      "  return ptp(axis=axis, out=out, **kwargs)\n"
     ]
    }
   ],
   "source": [
    "# Adding test_mse \n",
    "test_mse = []\n",
    "for model,features in zip(best_subset_models,results_best_subset['features']):\n",
    "    pred = model.predict(sm.add_constant(X_test.iloc[:,:12][list(features)]))\n",
    "    test_mse.append(mean_squared_error(pred,y_test))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### d) Plot the test set MSE associated with the best model of each size."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'Test MSE')"
      ]
     },
     "execution_count": 173,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(results_best_subset['numb_features'],test_mse,marker = 'o')\n",
    "plt.plot((min(zip(test_mse,results_best_subset['numb_features'])))[1],np.min(test_mse),marker = 'o',markersize = 8)\n",
    "plt.xlabel('Number of Features')\n",
    "plt.ylabel('Test MSE')\n",
    "# Min mse is at num_features = 4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'Train vs Test MSE')"
      ]
     },
     "execution_count": 176,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Comparing the plot of test mse and train mse\n",
    "plt.plot(results_best_subset['numb_features'],test_mse,marker = 'o')\n",
    "plt.plot(results_best_subset['numb_features'],results_best_subset['RSS'] / len(X_train),marker = 'o',color = 'red')\n",
    "\n",
    "# we can see that train mse goes on decreasing with increase in number of features, however that is not the case with test mse\n",
    "plt.legend(['Test error','Train_error'])\n",
    "plt.xlabel('Number of features')\n",
    "plt.ylabel('Error')\n",
    "plt.title('Train vs Test MSE')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (e) For which model size does the test set MSE take on its minimum value? Comment on your results. \n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The features of the moodel which has the lowest test mse are  ('X_1', 'X_7', 'X_8', 'X_11')\n"
     ]
    }
   ],
   "source": [
    "# Test error is minimum for a model with four features\n",
    "print('The features of the moodel which has the lowest test mse are ',results_best_subset['features'].loc[3])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (f) How does the model at which the test set MSE is minimized compare to the true model used to generate the data? Comment on the coefficient values\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 8.98273875, -3.33322713, -9.07251929, -1.92389973])"
      ]
     },
     "execution_count": 190,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "select_model = best_subset_models[3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[array([9.]), array([-4.]), array([-10.]), array([-2.])]"
      ]
     },
     "execution_count": 191,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# if we compare it to the original model\n",
    "list(beta[[0,6,7,10]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 192,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Predicted</th>\n",
       "      <th>True</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>8.982739</td>\n",
       "      <td>[9.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-3.333227</td>\n",
       "      <td>[-4.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-9.072519</td>\n",
       "      <td>[-10.0]</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.923900</td>\n",
       "      <td>[-2.0]</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Predicted     True\n",
       "0   8.982739    [9.0]\n",
       "1  -3.333227   [-4.0]\n",
       "2  -9.072519  [-10.0]\n",
       "3  -1.923900   [-2.0]"
      ]
     },
     "execution_count": 192,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame({'Predicted':select_model.params.values[1:],'True':list(beta[[0,6,7,10]])})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We can see that the values  selected are very close to the true values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### g) Create a plot displaying 'for a range of values of r, where βˆr j is the jth coefficient estimate for the best model containing r coefficients. Comment on what you observe. How does this compare to the test MSE plot from (d)?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "eq given in the question"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [],
   "source": [
    "best_estimates = select_model.params.values[1:]\n",
    "l2_norms = []\n",
    "for model in best_subset_models:\n",
    "    params = model.params.values[1:]\n",
    "    l2_norms.append(np.linalg.norm(params))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 201,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'L2 Norm')"
      ]
     },
     "execution_count": 201,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(results_best_subset['numb_features'],l2_norms,marker = 'o')\n",
    "plt.xlabel('Number of features')\n",
    "plt.ylabel('L2 Norm')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 11. We will now try to predict per capita crime rate in the Boston data set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_boston\n",
    "boston = load_boston()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CRIM</th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.03237</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.06905</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>7.147</td>\n",
       "      <td>54.2</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.33</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      CRIM    ZN  INDUS  CHAS    NOX     RM   AGE     DIS  RAD    TAX  \\\n",
       "0  0.00632  18.0   2.31   0.0  0.538  6.575  65.2  4.0900  1.0  296.0   \n",
       "1  0.02731   0.0   7.07   0.0  0.469  6.421  78.9  4.9671  2.0  242.0   \n",
       "2  0.02729   0.0   7.07   0.0  0.469  7.185  61.1  4.9671  2.0  242.0   \n",
       "3  0.03237   0.0   2.18   0.0  0.458  6.998  45.8  6.0622  3.0  222.0   \n",
       "4  0.06905   0.0   2.18   0.0  0.458  7.147  54.2  6.0622  3.0  222.0   \n",
       "\n",
       "   PTRATIO       B  LSTAT  \n",
       "0     15.3  396.90   4.98  \n",
       "1     17.8  396.90   9.14  \n",
       "2     17.8  392.83   4.03  \n",
       "3     18.7  394.63   2.94  \n",
       "4     18.7  396.90   5.33  "
      ]
     },
     "execution_count": 205,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.DataFrame(boston.data,columns = boston.feature_names)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ZN</th>\n",
       "      <th>INDUS</th>\n",
       "      <th>CHAS</th>\n",
       "      <th>NOX</th>\n",
       "      <th>RM</th>\n",
       "      <th>AGE</th>\n",
       "      <th>DIS</th>\n",
       "      <th>RAD</th>\n",
       "      <th>TAX</th>\n",
       "      <th>PTRATIO</th>\n",
       "      <th>B</th>\n",
       "      <th>LSTAT</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1.0</td>\n",
       "      <td>296.0</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2.0</td>\n",
       "      <td>242.0</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>7.147</td>\n",
       "      <td>54.2</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3.0</td>\n",
       "      <td>222.0</td>\n",
       "      <td>18.7</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.33</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     ZN  INDUS  CHAS    NOX     RM   AGE     DIS  RAD    TAX  PTRATIO       B  \\\n",
       "0  18.0   2.31   0.0  0.538  6.575  65.2  4.0900  1.0  296.0     15.3  396.90   \n",
       "1   0.0   7.07   0.0  0.469  6.421  78.9  4.9671  2.0  242.0     17.8  396.90   \n",
       "2   0.0   7.07   0.0  0.469  7.185  61.1  4.9671  2.0  242.0     17.8  392.83   \n",
       "3   0.0   2.18   0.0  0.458  6.998  45.8  6.0622  3.0  222.0     18.7  394.63   \n",
       "4   0.0   2.18   0.0  0.458  7.147  54.2  6.0622  3.0  222.0     18.7  396.90   \n",
       "\n",
       "   LSTAT  \n",
       "0   4.98  \n",
       "1   9.14  \n",
       "2   4.03  \n",
       "3   2.94  \n",
       "4   5.33  "
      ]
     },
     "execution_count": 207,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictors = data.drop('CRIM',axis = 1)\n",
    "y = data['CRIM']\n",
    "predictors.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEWCAYAAABhffzLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3dfZRcdZ3n8fe3qrq6qzsd0ul0AqQJQcAosuEhLcvD7gyIuj4jAwJKDLAuUTIjyrhMUA8rHmdcAUdEWfAkohJlFAwgjqPMeBBnR2dBOwgRCAGGBwmBpGkSkvRTddX97h9VXanuruqnVKXS/fu8zunTVbfurfrevtWfuvW7v/u75u6IiEg4YrUuQERE9i8Fv4hIYBT8IiKBUfCLiARGwS8iEhgFv4hIYBT8IiKBUfBLkMzseTN7u5ldbGZuZleOeHyLmZ2ev32NmQ2a2e78z1NmdpOZHVI0/8Vm9ptyr5O/3W5md5nZq2b2upn90cwuru6aioym4BeB14DVZjZ7jHnucPdmYC5wNnAwsKE4/Cfg+8CLwOFAK7AC2Da1kkWmTsEvApuA/wdcMd6M7j7o7o8D5wNdwGcm8TpvBb7n7j3unnH3P7j7L6ZUscg+UPCL5FwNXGFmcycys7tngXuB/zqJ13gQ+D9mdoGZLZpCjSIVoeAXAdz9EeBfgNWTWGwruaafifoQ8G/kPmSeM7NHzOytk1hepCIU/CJ7/S/gMjM7eILzLyR3fAAgA9SVmKcOGARw9x3ufpW7vwVYADwC/MTMbN/KFpkcBb9Inrs/CdwNfG68ec0sBryf3B48wJ+ARcUhbmaNwHzghRKv9SrwVeBQJvetQWSfKfhFhvsicAkwp9SDZlZnZm8GfkiuZ8/X8g89BPQDV5lZg5k1AV8BOskHv5lda2bHmlnCzJqBy4Bn3L27qmskMoKCX6SIuz9Hrttl04iHzjezPcBO4KdAN7DM3bfmlxsA3gucDmwBniW3N3+e773oRSNwT/45niXXrfMD1VwfkVJMF2IREQmL9vhFRAKj4BcRCYyCX0QkMAp+EZHAJGpdwETMmzfPFy9eXOsyRESmlQ0bNrzq7m0jp0+L4F+8eDGdnZ21LkNEZFoxs1EnD4KaekREgqPgFxEJjIJfRCQwCn4RkcAo+EVEAjMtevWIyL6LIqe7J006kyWZiNPalCQW06UAQqTgFwlAFDmbt+3m0nWdbNnRR3tLirUrOliyoFnhHyA19YgEoLsnXQh9gC07+rh0XSfdPekaVya1oOAXCUA6ky2E/pAtO/pIZ7I1qkhqScEvEoBkIk57S2rYtPaWFMlEvEYVSS0p+EUC0NqUZO2KjkL4D7XxtzYla1yZ1IIO7ooEIBYzlixo5p5Vp6lXjyj4RUIRixltzfW1LkMOAGrqEREJjIJfRCQwCn4RkcAo+EVEAqPgFxEJjIJfRCQwCn4RkcAo+EVEAqPgFxEJjIJfRCQwCn4RkcAo+EVEAlPV4DezK8zscTN7zMx+aGYNZnaEmT1kZk+b2R1mpnFhRUT2o6oFv5ktBC4HOtz9WCAOXABcC9zg7kcDO4CPVasGEREZrdpNPQkgZWYJoBF4GXgbsD7/+G3AB6tcg4iIFKla8Lv7S8BXgT+RC/zXgQ3ATnfP5GfbAiwstbyZrTSzTjPr7OrqqlaZIiLBqWZTTwtwFnAEcCjQBLy7xKxeanl3X+PuHe7e0dbWVq0yRUSCU82mnrcDz7l7l7sPAncDpwJz8k0/AO3A1irWICIiI1Qz+P8EnGxmjWZmwJnAE8ADwLn5eS4C7q1iDSIiMkI12/gfIncQ92Hgj/nXWgOsBv7azJ4BWoFbq1WDiIiMVtWLrbv7F4AvjJj8LHBSNV9XRETK05m7IiKBUfCLiARGwS8iEhgFv4hIYBT8IiKBUfCLiASmqt05ReTAEUVOd0+adCZLMhGntSlJLGa1LktqQMEvEoAocjZv282l6zrZsqOP9pYUa1d0sGRBs8I/QGrqEQlAd0+6EPoAW3b0cem6Trp70jWuTGpBwS8SgHQmWwj9IVt29JHOZGtUkdSSgl8kAMlEnPaW1LBp7S0pkol4jSqSWlLwiwSgtSnJ2hUdhfAfauNvbdIlr0Okg7siAYjFjCULmrln1Wnq1SMKfpFQxGJGW3N9rcuQA4CaekREAqPgFxEJjIJfRCQwCn4RkcDo4K5IIDRWjwxR8IsEQGP1SDE19YgEQGP1SDEFv0gANFaPFFPwiwRAY/VIMQW/SAA0Vo8U08FdkQBorB4ppuAXCYTG6pEhauoREQmMgl9EJDAKfhGRwCj4RUQCo+AXEQmMgl9EJDAKfhGRwCj4RUQCo+AXEQlMVYPfzOaY2Xoze9LMNpnZKWY218x+aWZP53+3VLMGEREZrtp7/DcC97n7m4DjgE3AVcD97n40cH/+voiI7CdVC34zmw38GXArgLun3X0ncBZwW36224APVqsGEREZrZp7/G8AuoDvmtkfzOzbZtYELHD3lwHyv+dXsQYRERmhmsGfAE4EbnH3E4AeJtGsY2YrzazTzDq7urqqVaOISHCqGfxbgC3u/lD+/npyHwTbzOwQgPzv7aUWdvc17t7h7h1tbW1VLFNEJCxVC353fwV40cyW5CedCTwB/BS4KD/tIuDeatUgIiKjVftCLJ8EbjezJPAscAm5D5s7zexjwJ+AD1W5BhERKVLV4Hf3R4COEg+dWc3XFRGR8nTmrohIYBT8IiKBUfCLiARGwS8iEhgFv4hIYBT8IiKBUfCLiARGwS8iEhgFv4hIYBT8IiKBUfCLiASm2oO0icgBIoqc7p406UyWZCJOa1OSWMxqXZbUgIJfJABR5GzetptL13WyZUcf7S0p1q7oYMmCZoV/gNTUIxKA7p50IfQBtuzo49J1nXT3pGtcmdSCgl8kAOlMthD6Q7bs6COdydaoIqklBb9IAJKJOO0tqWHT2ltSJBPxGlUktaTgFwlAa1OStSs6CuE/1Mbf2pSscWVSCzq4KxKAWMxYsqCZe1adpl49ouAXCUUsZrQ119e6DDkAqKlHRCQwY+7xm9lfjPW4u99d2XJERKTaxmvqWQ88kv8BKG4QdEDBLyIyzYwX/OcA5wNLgXuBH7r7M1WvSkREqmbMNn53v8fdLwD+HPgP4O/N7Ddm9uf7pToRqZgocrp2D/DSjl66dg8QRV7rkqRGJtqrpx94HdgFLAIaqlaRiFScxuqRYmPu8ZvZGWa2BtgAnAHc6O4nuPs/75fqRKQiNFaPFBtvj/9+YCPwG6AeWGFmK4YedPfLq1ibiFSIxuqRYuMF/38n13tHRKaxobF6isNfY/WEa8zgd/fv7ac6RKSKhsbqGdnGr7F6wjTeCVz/yBh7/O7+gYpXJCIVp7F6pNh4TT1f3S9ViEjVaaweGTJeU8+/lnvMzE6rfDkiIlJt4zX1xIHzgIXAfe7+mJm9D/gckAJOqH6JIiJSSeM19dwKHAb8DviGmb0AnAJc5e4/qXZxIlI5UeR096TVxi/jBn8HsNTdIzNrAF4FjnL3V6pfmohUis7clWLjjcefdvcIwN37gacU+iLTj87clWLj7fG/ycw25m8bcGTRfdx96XgvkD9O0Am85O7vM7MjgB8Bc4GHgY+6u959IlWkM3el2HjBfxywAHhxxPTDga0TfI1PAZuA2fn71wI3uPuPzOxbwMeAWyb4XCIyBTpzV4qN19RzA7DL3V8o/gF684+NyczagfcC387fN+Bt5C7wAnAb8MGpFi8iEzN05m57SwpAZ+4Gbrw9/sXuvnHkRHfvNLPFE3j+rwN/AzTn77cCO909k7+/hVxX0VHMbCWwEmDRokUTeCkRKUdn7kqx8fb4xxp3PzXWgvn+/tvdfUPx5BKzlhwSwt3XuHuHu3e0tbWNU6aIiEzUeHv8vzezS919bfFEM/sYuTH6x3Ia8AEzew+5D5DZ5L4BzDGzRH6vv52JHysQkSmKIuf57h5e6O6lMRmnN53l8NZGFrc2aa8/QOMF/6eBe8zsQvYGfQeQBM4ea0F3/yzwWQAzOx34n+5+oZn9GDiXXM+ei8hdy1dEqmhnX5ptu/q5+t7HCv34rz93KXMa65jbpPF7QjPeNXe3ufupwBeB5/M/X3T3U/ahP/9q4K/N7Blybf63TvF5RGSC+tJZrly/cVg//ivXb6Qvre6cIZrQNXfd/QHggam+iLv/Gvh1/vazwElTfS4Rmbyse8l+/FldZilI4x3cFZEZoKEuXujKOaS9JUVDnSIgRNrqIgGY11Rfsh//PLXvB2lCTT0iMr2pH78UU/CLBEJX4JIhauoREQmMgl9EJDAKfhGRwCj4RUQCo+AXEQmMgl9EJDAKfhGRwCj4RUQCo+AXEQmMgl9EJDAKfhGRwCj4RUQCo0HaRAIRRU53T1qjc4qCXyQEUeRs3rabS9d1Fq65u3ZFB0sWNCv8A6SmHpEAdPekC6EPucsuXrquk+6edI0rk1pQ8IsEIJ3Jlrzmbjqji62HSMEvEoBkovQ1d5OJeI0qklpS8IsEoLUpWfKau61NyRpXJrWgg7siAYjFjKPbZnHnx09hMBtRF48xf1a9DuwGSsEvEoAocp7u2qNePQKoqUckCOrVI8UU/CIBUK8eKabgFwlAzKxkr56YqZknRAp+kQDEDK4/d+mwXj3Xn7sUNe+HSQd3RQLQn4m47r7NXP2+Y5iTqmNn3yDX3beZGy84vtalSQ0o+EUCkIgZXXsG+Pj3NxSmtbekiGuXP0hq6hEJQCJm3HjB8cOaem684HgSCv4gaY9fJAD1dTFaZyX53iUnETOIHBLx3HQJj4JfJABZd17e2c+V6zcWTuC6/tylNDcoAkKkj3uRAPSno0LoQ64P/5XrN9KfjmpcmdSCgl8kAFn3kidwZb1GBUlNVS34zewwM3vAzDaZ2eNm9qn89Llm9kszezr/u6VaNYhITkOZYZkbEtr3C1E1t3oG+Iy7vxk4GfhLMzsGuAq4392PBu7P3xeRKorHS5/AFddw/EGq2pEdd38ZeDl/e7eZbQIWAmcBp+dnuw34NbC6WnWICPQMZEufwPXh42ltqnV1sr/tl+95ZrYYOAF4CFiQ/1AY+nCYX2aZlWbWaWadXV1d+6NMkRkrZkZb8/CLrrQ1JzVWT6Cq3pfLzGYBdwGfdvddNsE3mruvAdYAdHR06BCUyD5oSMT4q7cdzarbHy5057z5whPVxh+oqga/mdWRC/3b3f3u/ORtZnaIu79sZocA26tZg4jAYNa56VdPD2vquelXT/PFDxxb69KkBqoW/Jbbtb8V2OTuXyt66KfARcBX8r/vrVYNIpJnzkWnHsHqu/aewHXtOUtBLT1Bqub3vNOAjwJvM7NH8j/vIRf47zCzp4F35O+LSBVFEYXQh1wf/tV3bSSK1Ioaomr26vkN5fcnzqzW64rIaNmozAlcCv4g6ciOSADq4rGSJ3DVxRUBIdIITSIBSNYZt160jHgsXhidMxtlSdapkT9ECn6RAHgE6SxcdtvvCgd3b1m+DNcYbUFS8IsEIJ2J+Ob9Tw3rzvnN+5/imve/pdalSQ2ogU8kBAarzjiKZL5NPxmPseqMo9SdM1Da4xcJQNyMvnSWq+99bNiFWOIasiFI2uMXCcBg5CUvxDKo7pxBUvCLBKBcP36dwBUmBb9IAJLqxy9FtNVFAhAzuOG844ZdiOWG844jpib+IOngrkgA+jMRX/75k8O6c37550/y9QuOr3VpUgMKfpEAJGJG154BPv79DYVp7S0pEtrlD5KaekQC0FAX41vLlw1r6vnW8mU01CkCQqQ9fpEAZLJOQ53xvUtOKozVAxGZrHr1hEjBLxIAB3b0DHLFnY8WTuC64bzjmFVfV+vSpAb0PU8kANnIC6EPuT78V9z5qMbjD5SCXyQAWS9zIRZX8IdIwS8SgLhZyRO4NFZPmBT8IgEwg29ccMKwXj3fuOAElPth0sFdkQCk6mI0pxJ86axjaUzG6U1naU4lSKk7Z5AU/CIB6E1HXPLd3w9r529vSXHHypNpaaphYVIT+rgXCUCmzOicGfXqCZL2+EUCkIgZ7zxmPucsO6wwVs9dG17UkA2BUvCLBCCVjPG3Zx9LOuNkI2dhS4oTFh2r4A+Ugl8kADGDbbvSXPaDDYUzd29ZvozDWuprXZrUgIJfJAA9AxHfvP+pYcMyf/P+p/jC+9/CnMZaVyf7m4JfJABmcNGpR7D6ro2FPf5rz1mqfvyBUq8ekQC4Uwh9yPXoWX3XRiYzYkMUOV27B3hpRy9duwd0vd5pTHv8IgGIyozVE00w+aPIeb67hxe6ewsngB3e2sji1iZiOkA87WiPXyQA+zpWz86+NLv7B4dN290/yM6+dMVqlP1HwS81o6aD/ScRM64/d+mwsXquP3fphLtzDmaiUfMmYsZgJqp4rVJ9auqRmogiZ/O23Vy6rrNwsHHtig6WLGhW00EV9Gcirrtv87BePdfdt5kbPzzxi63biO0y8r5MHwp+mZQocrp70qQzWZKJOK1NySkFdXdPuhD6kGtvvnRdJ/esOo22ZvUtr7SyF1ufYFOPGbzeO8jV9z5W+KC+/tylzGtKVrzWSr3HpDw19ciERZHz5Cu7OPvm33LatQ9w9s2/5clXdk2piSadyZY82JjOZCtVrhSJlWnqmWigprPOleuH9wq6cv1G0hW+Zu/QN8Hi99jmbbvVDFhh2uOvgYGBDK/2pslETiJmzGtMUl9/4G+Krt0DrPz+hmH//Cu/v4G7PnEqCw5qmNRzJRPxkmPHJBPxapQevHR235p6ojKDvFU6kF/tGSj5TfDuVacyv3ly7zEp78BPm2mq3NfVgYEMr/QMMJhxYgaDWeeVngEOhn0K//7+DN19ez9MWlPJUfcbGvY+fzqdYddAhoFMRCZy6uIx5jbUlVwmk4nYvmeAwWw06p///GXtZKKIF7p7SMSM+bPqqasbO7z7+zOkM1k+/95jSMSM5oYYu/sjTjnyPxFFub9dLGaj1mlOKs7OPn39n4qGunjJpp6GcbbVkHgs1yto5LDO8Qpvg/7B0t8EBwYPvG+C1WySKv6fq4vHmD+rnkSicg00NQl+M3sXcCMQB77t7l+p9GsUb5S6RIxEzOhLD99A6XSGrp69wVKfiBG5M5h16uLGYNYLjw3dT8SM+jrDHbIRpDPOYBTRkIiRdRjMRsxuiNObjgrLxmLOtt19NNbF2DMQQX4n6Z8e3cqx7XNYPK+R1/oHiQ9k6BvMFmqZVZcgS4adfbnnam2K83rf3uc9KBUjQYJBMrzQPcAn8uOwrLtkGcyfXZhvVkOMbT0DJPrSzGtMYgYv7xlgd1+msMwvLj+V7p7RY7kc3drE9t4B0hmnoS427J//M28/mncvPYSntu0p9O3uG8xyeEtj2fDv78/wTHdP4XXbW1J8a/ky0oODvNZbxxta63m9f4BULMHT3T2j6vEoy6p/eIS1H+1gycHlDwRP9FtVqQ/M4g/IfZ0fYHAwy/Y9A4VlJvLhWGnzmupZu6Jj1MH0eU0TO54SM7j2nKWjzvyNVbixOBmPlfyAqYsfWK3SQ82eQ9+A21tSrPnoMt508Ox9Dv9MJmLrrj7ShZ3DLFt39XHo7FTFwt98P19s2cziwFPAO4AtwO+BD7v7E+WW6ejo8M7Ozgm/RqkeI9efu5Tr7ttM154B1q7o4A1zG3nq1eHB8oP/cRK7+zL87NGXeO9xC1l1+8OFx26+8ET+6dGXePsxBzOnKclBqQTuzjm3PEjbrHr+5l1LuHL9Rs5f1s7pb14wKrAOnVPP1p0DhenvPGY+nzzzjcPmK67x5gtP5Mh5DTzbnVvmOxctYyDLqOc9vLWebBbef9O/s2VHH2s/eiIHz2kcNd8rO3v54s82ccvyZSyaW8/rfVk+svahwj/Yb1efwflrHix5oY7unjSrbn+Yuz5xCs++2lNo6/3d58/kP7bvKdwfWoej5s+irczX8q07ejmvxOvcufJkzlvzIHesPJnXegeZ21hXtp7Trn2A9pYUd192KvNnj36dgYHMqG17y/JlvHFe07Dw7+/PlPxwObq1qWSYT3Z+yIX+k9v3jFrmTfNn7ffw35c91K07ernmHx8f1TR3zfvfwqEtlRvsZ9vrfcPeY0PvqTfMa2LBQanxn2A/2fZ6P+d8699HvT+n0uw5Uveefl7a2T8qfxbOaaB11uSe28w2uHvHyOm1+Bg9CXjG3Z919zTwI+CsSr5AqR4jV67fyCdOP7LQZvhq796926F5Mlm47PaHObdjUeGPPvTYqvz0K+58lC2v5T6NB7O5xz5x+pGFN+pZJ7aPet7LfrCB/nQ0bPo5yw4bNV9xjatuf5idfXuXaaqvK/m8u/sietN7m2COOfSgkvMdc+hBhdt7+iPcGfamHetCHUN/i/o6Y15zPV8661juWHky6UxU8oDfwBh9uwfLvM7Q9EzkXPaDDeNeOGTLjj76y3z9L7VtL/vBBl7tHX6yUXdf6fm6y5yUNNn5AbbvGSi5zPY9A2WXqZZYzGhrrmdhSyNtzfWT2jOdm0py+Zlv5Es/e4Lz1zzIl372BJef+Ubmpirbq6e42+kdK0/m6vcdw3X3bab/ADtfoL9M54SBCnRO6B+MSuZP/2Dl/ga1aOpZCLxYdH8L8J9HzmRmK4GVAIsWLZrUC5TrMTInVVe4XSpYYpZ7LB6zkssPTW9MxskWHdSak6orzF/u1PiRr1e8zERqHC8Ih74eTyQwM5GParNNlGnDTRT9LepicFAqQWrBLLJRblz3Uq9V/LcZaay24uLXG6ueodvlgmuiV5ua7FWppnIVq5ly5auGhgRHtTZxx8qTJ9XMNVllu50eYMdzyr2PK9HGvz/eM7XY4y/1lxm1Ru6+xt073L2jra1tUi+QTMRLnp6+s2+wcHsoWIpFnnssG3nJ5Yem96azxGNWOLC1s2+wMH+szKnxI1+veJmJ1Fiq3qF5is/KHGu+4tt1I7r3NSRj3LJ82bDufrcsX8bsVKwwbfmtG2iqs8IGrCvzWnVjvPnrE7GS3QrrYsYty5cBnj/oGOPmC08cNt/NF55YOM4wtEwp4/0NJjvfVOef6jIHqoaGBAtbGjm8tYmFLY0VD32A1lSy5PuwtcLfLPbVyP+f8d6Tk7E/3jO1aOM/BbjG3f9b/v5nAdz9f5dbRm38Y7fxP/PKHmY31vPia3285dBZbNs9OGYb/9GtTQx4hu27B9nyWu4bTMyMNx7cyJ7+aNhB4XobfpD1ncfM5/PvPYa4GS2NcZ7r7h91oPaoMdq8M5mI51/r4cX86/amsxw2N8WcVB0DmSznr3lo1EHlmOU+lJMJIxGDza/00D43xeIyB5HVxj+9TeUA+v7W35/hxV19hf+f3nSW9rkpDpud2udaK/meKdfGX4vgT5A7uHsm8BK5g7sfcffHyy0z2eCH2vbqaW6I01fUqyeVjBGPQRQxrLdPU32ul08UOfWJOGZMqVdPd1+ahroY/YO5x+Y0xkcF+M7e7LDeLQMDGXoymWF1zqqPMZDJrcPILqjleshM5Z90qKtaJhuRGKMb6cjt01Qf4/W+7IR6xqhXj1RbNT+gKvWeOWCCP1/Me4Cvk+vO+R13/7ux5p9K8IuIhK5c8Nfk+5O7/xz4eS1eW0QkdAfWWREiIlJ1Cn4RkcAo+EVEAqPgFxEJTE169UyWmXUBL0xg1nnAq1Uup5a0ftPXTF430PodqA5391FnwE6L4J8oM+ss1XVpptD6TV8zed1A6zfdqKlHRCQwCn4RkcDMtOBfU+sCqkzrN33N5HUDrd+0MqPa+EVEZHwzbY9fRETGoeAXEQnMjAl+M3uXmW02s2fM7Kpa11NJZva8mf3RzB4xs2k/TKmZfcfMtpvZY0XT5prZL83s6fzvllrWuC/KrN81ZvZSfhs+kh+hdtoxs8PM7AEz22Rmj5vZp/LTZ8T2G2P9ZsT2GzIj2vincgH36cTMngc63H06nkAyipn9GbAHWOfux+anXQe85u5fyX9wt7j76lrWOVVl1u8aYI+7f7WWte0rMzsEOMTdHzazZmAD8EHgYmbA9htj/c5jBmy/ITNlj7/qF3CXynH3/wu8NmLyWcBt+du3kftnm5bKrN+M4O4vu/vD+du7gU3krqM9I7bfGOs3o8yU4C91AfeZtLEc+Bcz25C/CP1MtMDdX4bcPx8wv8b1VMNfmdnGfFPQtGwKKWZmi4ETgIeYgdtvxPrBDNp+MyX4J3QB92nsNHc/EXg38Jf5pgSZXm4BjgSOB14G/r625ewbM5sF3AV82t131bqeSiuxfjNq+82U4N8CHFZ0vx3YWqNaKs7dt+Z/bwfuIde0NdNsy7evDrWzbq9xPRXl7tvcPevuEbCWabwNzayOXCje7u535yfPmO1Xav1m0vaDmRP8vweONrMjzCwJXAD8tMY1VYSZNeUPMmFmTcA7gcfGXmpa+ilwUf72RcC9Nayl4oZCMe9spuk2NDMDbgU2ufvXih6aEduv3PrNlO03ZEb06oHJX8B9ujCzN5Dby4fcNZL/Ybqvm5n9EDid3FC324AvAD8B7gQWAX8CPuTu0/IAaZn1O51cM4EDzwMfH2oTn07M7L8A/wb8EYjykz9Hrh182m+/Mdbvw8yA7TdkxgS/iIhMzExp6hERkQlS8IuIBEbBLyISGAW/iEhgFPwiIoFR8EvwzGxP/vdiM3Mz+2TRYzeZ2cX5298zs+fM7FEze8rM1pnZwpHPU3T/YjO7KX97iZn9Oj+y4yYzm1FXdJLpRcEvMtx24FP5EwFLudLdjwOWAH8AHhhj3mLfAG5w9+Pd/c3ANytTrsjkKfhFhusC7mfvWaglec4NwCvkxlAazyHkhhYZWv6P+1KkyL5Q8IuM9hXgM/nrPIznYeBNE5jvBuBXZvYLM7vCzObsU4Ui+0DBLzKCuz8H/A74yARmLzUy7LCnyz/nd4E3Az8mN3zDg2ZWvw9likyZgl+ktC8Dqxn/f+QEchfrAOgb0d4/FyhcNc3dt7r7d9z9LCADHFvBekUmTMEvUoK7Pwk8Abyv1OOWczm5tvv78pP/FViefzxF7nJ9D+Tvvys/3C9mdjDQCrxUzXUQKUfBL1Le35G7tkOx683sUXLXeH4rcBVuSa4AAABVSURBVEb+cp8AnwL+wsweAR4Efpy/DCPkh9POL/vP5HoHvVL1NRApQaNziogERnv8IiKBUfCLiARGwS8iEhgFv4hIYBT8IiKBUfCLiARGwS8iEpj/D6625B1RErv8AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEWCAYAAABhffzLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAamklEQVR4nO3de3hc1Xnv8e87MxpJlgUWsnBzEGBaHDfEx9hYhwdCnybc0pZSSIrjY4Kxw+HYHEjThiQEmvPQkF7SA4TjkEshdkmxEwgQE4pPS0nzOKQ5OQ0EOSEulxgIBCJCjFBscOTLSDPv+WO2ZI2sy1jWni3t9fs8jx5p9oxmv8uXn5bWXnstc3dERCQcmaQLEBGR2lLwi4gERsEvIhIYBb+ISGAU/CIigVHwi4gERsEvIhIYBb8IYGbvN7NOM/u1mb1qZv9iZr9jZjeY2VdHeL2b2YnDjn0gOr5shNd/wsxejN6/y8zujbM9ImNR8EvwzOwjwGeBTwNzgOOAvwMuPMS3WgX8Kvo89P1XAZcC57j7TKAD2HKYZYtMmOnOXQmZmR0JvAJc5u5fH+H5G4AT3X3FsOMOzHP356PHxwMvAu8D7gWOcfcd0XNfAPrd/cNxtkWkWurxS+hOBxqABw7zfVYCne5+P/AMcMmQ5x4FVprZNWbWYWbZwzyXyGFR8EvoWoHX3b1/jNcsM7NdQz9GeM1K4O7o67sZMtzj7l8FPgT8HvBvwGtmdt3klC9y6BT8EroeYLaZ5cZ4zX3uPmvox9AnzewM4ATgnujQ3cB/NrNFA69x97vc/RxgFvA/gL80s9+b1JaIVEnBL6H7PrAPeM9hvMcqwIAnzOyXwGPR8ZXDX+jufdG1hG3AgsM4p8iEjdXLEUk9d3/DzP4C+KKZ9QP/CvQB5wBnAnvG+n4zawCWAWuAfx7y1EXAX5jZx4EVQDfwXaCX8pDP2znwA0KkpjSrRwQws0uAq4G3AbuBrcDfAO9mjFk9lKdmrgWOc/e+Ic83AF3AB4A88FHgJCALvATc4u53xtookVEo+EVEAqMxfhGRwCj4RUQCo+AXEQmMgl9EJDDTYjrn7Nmzfe7cuUmXISIyrWzduvV1d28bfnxaBP/cuXPp7OxMugwRkWnFzF4a6biGekREAqPgFxEJjIJfRCQwCn4RkcAo+EVEAjMtZvUcrlLJ6ektUOgvks9laW3Kk8lY0mWJiCQi9cFfKjnbd+xm9cZOunbupb2lkfUrO5g/p1nhLyJBSv1QT09vYTD0Abp27mX1xk56egsJVyYikozUB3+hvzgY+gO6du6l0F9MqCIRkWSlPvjzuSztLY0Vx9pbGsnnsglVJCKSrNQHf2tTnvUrOwbDf2CMv7Upn3BlIiLJSP3F3UzGmD+nmQeuOkOzekRECCD4oRz+bc31SZchIjIlpH6oR0REKin4RUQCo+AXEQmMgl9EJDAKfhGRwCj4RUQCo+AXEQmMgl9EJDAKfhGRwCj4RUQCo+AXEQmMgl9EJDCxBr+ZXW1mT5nZk2b2NTNrMLMTzOwxM3vOzO41M62PLCJSQ7EFv5kdA/wp0OHuC4AssBy4EVjr7vOAncDlcdUgIiIHi3uoJwc0mlkOmAG8CpwFbIqe3wC8J+YaRERkiNiC391fAT4DvEw58N8AtgK73L0/elkXcMxI329ma8ys08w6u7u74ypTRCQ4cQ71tAAXAicA/wloAv5ghJf6SN/v7uvcvcPdO9ra2uIqU0QkOHEO9ZwDvOju3e7eB3wDeAcwKxr6AWgHfhFjDSIiMkycwf8ycJqZzTAzA84GngYeAZZGr1kFPBhjDSIiMkycY/yPUb6I+0PgP6JzrQOuBT5iZs8DrcAdcdUgIiIHi3WzdXf/JPDJYYdfAE6N87wiIjI63bkrIhIYBb+ISGAU/CIigVHwi4gERsEvIhIYBb+ISGBinc45VZRKTk9vgUJ/kXwuS2tTnkzGki5LRCQRqQ/+UsnZvmM3qzd20rVzL+0tjaxf2cH8Oc0KfxEJUuqHenp6C4OhD9C1cy+rN3bS01tIuDIRkWSkPvgL/cXB0B/QtXMvhf5iQhWJiCQr9cGfz2Vpb2msONbe0kg+l02oIhGRZKU++Fub8qxf2TEY/gNj/K1N2upXRMKU+ou7mYwxf04zD1x1hmb1iIgQQPBDOfzbmuuTLkNEZEpI/VCPiIhUUvCLiARGwS8iEhgFv4hIYIK4uKu1ekREDkh98GutHhGRSqkf6tFaPSIilVIf/FqrR0SkUuqDX2v1iIhUSn3wa60eEZFKqb+4q7V6REQqpT74QWv1iIgMlfqhHhERqaTgFxEJjIJfRCQwCn4RkcAo+EVEAqPgFxEJjIJfRCQwCn4RkcAo+EVEAhNr8JvZLDPbZGY/MbNnzOx0MzvKzL5lZs9Fn1virEFERCrF3eO/FXjY3X8bOBl4BrgO2OLu84At0WMREamR2ILfzI4Afhe4A8DdC+6+C7gQ2BC9bAPwnrhqEBGRg8XZ4/9NoBv4BzP7kZn9vZk1AXPc/VWA6PPRMdYgIiLDxBn8OeAU4DZ3Xwz0cgjDOma2xsw6zayzu7s7rhpFRIITZ/B3AV3u/lj0eBPlHwQ7zOwtANHn10b6Zndf5+4d7t7R1tYWY5kiImGJLfjd/ZfAz81sfnTobOBpYDOwKjq2CngwrhpERORgcW/E8iHgLjPLAy8Al1H+YXOfmV0OvAy8L+YaRERkiFiD392fADpGeOrsOM8rIiKj0527IiKBUfCLiARGwS8iEhgFv4hIYBT8IiKBUfCLiARGwS8iEhgFv4hIYBT8IiKBUfCLiARGwS8iEpi4F2mbEkolp6e3QKG/SD6XpbUpTyZjSZclIpKI1Ad/qeRs37Gb1Rs76dq5l/aWRtav7GD+nGaFv4gEKfVDPT29hcHQB+jauZfVGzvp6S0kXJmISDJSH/yF/uJg6A/o2rmXQn8xoYpERJKV+uDP57K0tzRWHGtvaSSfyyZUkYhIslIf/K1Nedav7BgM/4Ex/tamfMKViYgkI/UXdzMZY/6cZh646gzN6hERIYDgh3L4tzXXJ12GiMiUkPqhHhERqTRmj9/M/nis5939G5NbjoiIxG28oZ5NwBPRB8DQgXEHFPwiItPMeMF/EfBfgYXAg8DX3P352KsSEZHYjDnG7+4PuPty4J3AT4FbzOx7ZvbOmlQ3SUolp3v3fl7ZuYfu3fsplTzpkkREElPtrJ59wBvAm8BxQENsFU0yrdUjIlJpzB6/mZ1pZuuArcCZwK3uvtjdv1mT6iaB1uoREak0Xo9/C7AN+B5QD6w0s5UDT7r7n8ZY26TQWj0iIpXGC/7/Rnn2zrQ1sFbP0PDXWj0iErIxg9/d76xRHbEZWKtn+Bi/1uoRkVCNdwPX/2GMHr+7XzDpFU0yrdUjIlJpvKGez9SkiphprR4RkQPGG+r5t9GeM7MzJr8cERGJ23hDPVlgGXAM8LC7P2lm5wOfABqBxfGXKCIik2m8oZ47gGOBHwCfM7OXgNOB69z9H+MubrKUSk5Pb0Fj/CIijB/8HcBCdy+ZWQPwOnCiu/8y/tImh+7cFRGpNN56/AV3LwG4+z7g2ekU+qA7d0VEhhuvx//bZrYt+tqA3xryGHdfON4JousEncAr7n6+mZ0A3AMcBfwQuNTdY0th3bkrIlJpvOA/GZgD/HzY8eOBX1R5jj8DngGOiB7fCKx193vM7HbgcuC2Kt/rkOnOXRGRSuMN9awF3nT3l4Z+AHui58ZkZu3AHwJ/Hz024CzKG7wAbADeM9HiqzFw5257SyOA7twVkeCN1+Of6+7bhh90904zm1vF+38W+DjQHD1uBXa5e3/0uIvyVNGDmNkaYA3AcccdV8WpRqY7d0VEKo3X4x9r3f3Gsb4xmu//mrtvHXp4hJeOuCSEu69z9w5372hraxunTBERqdZ4Pf7HzWy1u68fetDMLqe8Rv9YzgAuMLPzKP8AOYLybwCzzCwX9frbqf5awYSUSs7Penp5qWcPM/JZ9hSKHN86g7mtTer1i0iQxgv+DwMPmNklHAj6DiAPvHesb3T3Pwf+HMDM3gV8zN0vMbOvA0spz+xZRXkv39js2ltgx5v7uP7BJwfn8d+8dCGzZtRxVJPW7xGR8Iy35+4Od38H8CngZ9HHp9z99MOYz38t8BEze57ymP8dE3yfquwtFLlm07aKefzXbNrG3oKmc4pImKrac9fdHwEemehJ3P07wHeir18ATp3oex2qovuI8/iL03p7GRGRiRvv4u6011CXHZzKOaC9pZGGutQ3XURkRKlPv9lN9SPO45+t8X0RCVRVQz3Tmebxi4hUSn3wg3bgEhEZKvVDPSIiUknBLyISGAW/iEhgFPwiIoFR8IuIBEbBLyISGAW/iEhgFPwiIoFR8IuIBEbBLyISGAW/iEhgFPwiIoEJYpG2Usnp6S1odU4REQII/lLJ2b5jN6s3dg7uubt+ZQfz5zQr/EUkSKkf6unpLQyGPpS3XVy9sZOe3kLClYmIJCP1wV/oL464526hX5uti0iYUh/8+dzIe+7mc9mEKhIRSVbqg7+1KT/inrutTfmEKxMRSUbqL+5mMsa8tpncd8Xp9BVL1GUzHD2zXhd2RSRYqQ/+Usl5rvvXmtUjIhJJ/VCPZvWIiFRKffBrVo+ISKXUB3/GbMRZPRnTMI+IhCmA4Iebly6smNVz89KFaHhfREKV+ou7+/pL3PTwdq4//yRmNdaxa28fNz28nVuXL0q6NBGRRKQ++HMZo/vX+7niK1sHj7W3NJJVl19EApX6oZ5cxrh1+aKKoZ5bly8ip+AXkUClvsdfX5ehdWaeOy87lYxBySGXLR8XEQlR6oO/6M6ru/ZxzaZtgzdw3bx0Ic0NqW+6iMiIUt/t3VcoDYY+lOfwX7NpG/sKpYQrExFJRuqDv+g+4g1cRU+oIBGRhMUW/GZ2rJk9YmbPmNlTZvZn0fGjzOxbZvZc9LklrhoAGkZZlrkhl/qfeSIiI4oz/fqBj7r724DTgA+a2UnAdcAWd58HbIkexyabHfkGrqyW4xeRQMV2hdPdXwVejb7ebWbPAMcAFwLvil62AfgOcG1cdfTuL458A9fFi2htiuusIiJTV03GO8xsLrAYeAyYE/1QGPjhcPQo37PGzDrNrLO7u3vC586Y0dZcuelKW3Nea/WISLBin9NoZjOB+4EPu/ubVmXguvs6YB1AR0fHhC/FNuQy/MlZ87jqrh8OTuf8u0tO0Ri/iAQr1uA3szrKoX+Xu38jOrzDzN7i7q+a2VuA1+Ksoa/ofOHbz1UM9Xzh28/xqQsWxHlaEZEpK7bgt3LX/g7gGXf/30Oe2gysAv5X9PnBuGooF+KsescJXHv/gRu4brxoIWikR0QCFed4xxnApcBZZvZE9HEe5cA/18yeA86NHsemVGIw9KE8h//a+7dRKmkiv4iEKc5ZPd9j9H712XGdd7hiaZQbuBT8IhKo1F/hrMtmRryBqy6b+qaLiIwo9SuV5euMO1YtIZvJDq7OWSwVyddpkF9EwpT64PcSFIpw5YYfDF7cvW3FElxrtIlIoFIf/IX+Ep/f8mzFdM7Pb3mWG/7o7UmXJiKSiPQPdBtcdeaJ5KMx/Xw2w1VnnqjpnCISrNT3+LNm7C0Uuf7BJys2YslqyQYRCVTqe/x9JR9xI5Y+TecUkUClPvhHm8evG7hEJFSpD/685vGLiFRIffplDNYuO7liI5a1y04moyF+EQlU6i/u7usv8emHflIxnfPTD/2Ezy5flHRpIiKJSH3w5zJG96/3c8VXtg4ea29pJKcuv4gEKvVDPQ11GW5fsaRiqOf2FUtoqEt900VERpT6Hn9/0WmoM+687NTBtXqgRH9Rs3pEJEypD34Hdvb2cfV9Px68gWvtspOZWV+XdGkiIolI/XhHseSDoQ/lOfxX3/djrccvIsFKfY+/6KNsxOIKfhGZOkolp6e3QKG/SD6XpbUpTyamSSipD/6sGe0tjRXh397SqLV6RGTKKJWc7Tt2s3pj5+CQ9PqVHcyf0xxL+Kd+qMcMPrd8ccWsns8tX4xyX0Smip7eAmu/tZ3rzz+Je9ecxvXnn8Tab22np7cQy/lS3+NvrMvQ3Jjjry5cwIx8lj2FIs2NORo1nVNEpohSqcSqd5zAtfdvG+zx33jRQkqleHaMSn3w7ymUuOwfHj9oqOfeNafR0pRgYSIikaIzGPpQvg557f3buO+K02M5X+q7vf2jrM7Zr1k9IjJF+CiTUDymSSip7/HnMsa7Tzqai5YcO7hWz/1bf64lG0RkyqjLZUachFKXi6dvnvrgb8xn+Ov3LqDQ7xRLzjEtjSw+boGCX0SmjFzGuHnpwsFNowZ2Cowrp1If/BmDHW8WuPKrWwf/QG9bsYRjW+qTLk1EBIC9hSI3Pby9YhXhmx7ezhfevxhiuBaZ+uDv3V/i81uerfgD/fyWZ/nkH72dWTOSrk5EBMxGXkXYYpp3nvrgN2PEaVKaxy8iU4WZc+NFC2uWU6mf1eOjTJPSig0iMlWUSrDh31+suIFrw7+/GNve4Knv8ZdGmSZVUvKLyBQxoz7Dh86ax5V3/fDAtchLTmFGvWb1TIjW6hGRqa6vv9xJHbrCQMmdvv54zpf64K/1NCkRkUNVKJb44N0/OqiDes+a02I5X+qDf19/acRpUrderM3WRWRqKI6ywoDG+Cdo1M3WNdQjIlNEXXbkO3dz2XjG+FM/qycTDfUMXZb55qULY9vgQETkUDXVZ/jSpUsqcupLly6hSRd3J2b/aEM9yzXUIyJTQ1/R6S+WKi7u9hdL9BU11DMh9bkMt7xvAfV1dfSXnPaWRm553wLyMS1+JCJyqPb1lTiqKcfsmfX0l5xcxih5kX198azHn0j6mdnvm9l2M3vezK6L81zN9caRTZXr8hzZVE9zvYZ6RGRqaGnMMKO+ruLYjPo6WhpTMtRjZlngi8C5QBfwuJltdven4zhf0eEXu/YftEjb8UdpkTYRmRpqnVNJ9PhPBZ539xfcvQDcA1wY18l27ysN/mFCeYrUlV/dyu598fwKJSJyqGqdU0kE/zHAz4c87oqOVTCzNWbWaWad3d3dEz6ZduASkamu1jmVRPCPNLh+UOvcfZ27d7h7R1tb24RPlsvY4BSpAe0tjbpzV0SmjFrnVBLB3wUcO+RxO/CLuE7W2pjnthWV82NvW7GE1sZ8XKcUETkktc4pi2sz31FPaJYDngXOBl4BHgfe7+5PjfY9HR0d3tnZOeFz7tvXT8/ewuA0qdbGPA0NqZ/JKiLTSBw5ZWZb3b1j+PGap5+795vZnwDfBLLAl8cK/cnQ0JDjGAW9iExhtcypRNLQ3R8CHkri3CIiodPtqyIigVHwi4gERsEvIhIYBb+ISGBqPp1zIsysG3hpEt5qNvD6JLzPdBFSe0NqK6i9aTaZbT3e3Q+6A3ZaBP9kMbPOkea0plVI7Q2praD2plkt2qqhHhGRwCj4RUQCE1rwr0u6gBoLqb0htRXU3jSLva1BjfGLiEh4PX4RkeAp+EVEApPK4B9vM3czqzeze6PnHzOzubWvcnJU0daPmNnTZrbNzLaY2fFJ1DlZxmvvkNctNTM3s2k9BbCa9prZsujv+Ckzu7vWNU6mKv49H2dmj5jZj6J/0+clUedkMLMvm9lrZvbkKM+bmX0u+rPYZmanTNrJ3T1VH5SXev4p8JtAHvgxcNKw11wF3B59vRy4N+m6Y2zrmcCM6Osrp2tbq21v9Lpm4LvAo0BH0nXH/Pc7D/gR0BI9PjrpumNu7zrgyujrk4CfJV33YbT3d4FTgCdHef484F8o71p4GvDYZJ07jT3+ajZzvxDYEH29CTjbzKbjXozjttXdH3H3PdHDRynveDZdVfN3C/BXwE3AvloWF4Nq2rsa+KK77wRw99dqXONkqqa9DhwRfX0kMe7eFzd3/y7wqzFeciGw0cseBWaZ2Vsm49xpDP5qNnMffI279wNvAK01qW5yVbVx/RCXU+5BTFfjttfMFgPHuvs/1bKwmFTz9/tW4K1m9v/M7FEz+/2aVTf5qmnvDcAKM+uivKfHh2pTWiIO9f931dK4LVU1m7lXteH7NFB1O8xsBdABvDPWiuI1ZnvNLAOsBT5Qq4JiVs3fb47ycM+7KP8293/NbIG774q5tjhU096LgTvd/RYzOx34StTeUvzl1VxsOZXGHn81m7kPvibaA/hIxv6Va6qqauN6MzsH+J/ABe6+v0a1xWG89jYDC4DvmNnPKI+Lbp7GF3ir/bf8oLv3ufuLwHbKPwimo2raezlwH4C7fx9ooLyoWRpV9f97ItIY/I8D88zsBDPLU754u3nYazYDq6KvlwLf9uhqyjQzblujoY8vUQ796Tz+C+O0193fcPfZ7j7X3edSvqZxgbt3JlPuYavm3/I/Ur6Aj5nNpjz080JNq5w81bT3ZeBsADN7G+Xg765plbWzGVgZze45DXjD3V+djDdO3VCPj7KZu5n9JdDp7puBOyj/ivg85Z7+8uQqnrgq23ozMBP4enT9+mV3vyCxog9Dle1NjSrb+03g3Wb2NFAErnH3nuSqnrgq2/tRYL2ZXU152OMD07TThpl9jfIQ3ezomsUngToAd7+d8jWM84DngT3AZZN27mn6ZyYiIhOUxqEeEREZg4JfRCQwCn4RkcAo+EVEAqPgFxEJjIJfZAgz+w0zu8fMfhqtePmQmb11+AqKZnaDmX1syOOcmb1uZn877HXnRytJ/jh6vytq1RaR0aRuHr/IREUL9T0AbHD35dGxRcCcKr793ZTvml1mZp9wdzezOsqrSZ7q7l1mVg/Mjad6keqpxy9ywJlAX3TzDADu/gSVC2WN5mLgVsp3lp4WHWum3Lnqid5rv7tvn9SKRSZAPX6RAxYAW0d57rfM7Ikhj38D+AyAmTVSXkbgCmAW5R8C33f3X5nZZuAlM9sC/BPwtZQuKCbTiHr8ItX5qbsvGvgAbh/y3PnAwL4H9wPvNbMsgLv/d8o/FH4AfAz4co3rFjmIgl/kgKeAJRP4vouBc6IVQbdS3tvhzIEn3f0/3H0tcC5w0STUKXJYFPwiB3wbqDez1QMHzOy/AKPuU2xmRwC/Axw3ZFXQDwIXm9lMM3vXkJcvAl6Ko3CRQ6HgF4lEqzy+Fzg3ms75FOUdn8ZaA/2PKS/rPXSfgweBCyivMPnxaPPwJ4BPkZ5NYmQa0+qcIiKBUY9fRCQwCn4RkcAo+EVEAqPgFxEJjIJfRCQwCn4RkcAo+EVEAvP/Ad24im6lGHIeAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEWCAYAAABhffzLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3df3TcdZ3v8ed7ZjLJNE3bENJubYACcgqIpZBcttA9yg9dfyyKXLpYltpeLtsKeFdwdxFdD1c87vUs4oroLmVbuUgFBbYV8XI8qLeie3UPaIq1IlCKyI/yo01DStM0yWTm+75/zDfT/Jg0k9DJZOb7epwzJ/l+5jvz/Xwmk9d85/P9fD9fc3dERCQ6YuWugIiITC0Fv4hIxCj4RUQiRsEvIhIxCn4RkYhR8IuIRIyCX0QkYhT8IkOY2YEht8DMeocsXz5kvf9mZm5ml454/IfM7HUzO2pI2UVm9oqZzZ7KtoiMxXQCl0hhZvYC8Nfu/n8L3PcosBh4zN3/YsR93wEG3H21mc0BngKucvcfTEG1RcaVKHcFRCqNmR0HvBv4S+B+M5vn7ruHrPJJ4Ckzex+wAvi5Ql+mEwW/yMStAtrdfbOZPQ1cDnx18E5332tm1wL3Ag6cWp5qihSmPn6RiVsFfCf8/TvA6gLrPAbMBn7s7h1TVTGRYij4RSbAzJYBxwP3hUXfAd5pZktGrLoe2Ah80MzOmcIqioxLXT0iE7MaMGCbmQ0tXwVsAzCzK4FjgAuBdmCDmZ3h7ukprqtIQdrjFymSmdUBlwJrgSVDbn8DXG5mCTN7G3ALsMbd+4E7gE7gc+WptchoCn6R4n0E6AU2uvvrgzfgTiAOvB+4HbjP3f8fgOfGS68BrjOzd5Sp3iLDaBy/iEjEaI9fRCRiFPwiIhGj4BcRiRgFv4hIxFTEOP6jjz7aFy5cWO5qiIhUlK1bt+519+aR5RUR/AsXLqS9vb3c1RARqShm9mKhcnX1iIhEjIJfRCRiFPwiIhGj4BcRiRgFv4hIxFTEqB4RkekgCJzOnjTpTJZkIk5TfZJYzMZ/4DSj4BcRKUIQODt2d7NmYzu7unppaUyxYVUbi+Y1VFz4q6tHRKQInT3pfOgD7OrqZc3Gdjp7Ku/6Ogp+EZEipDPZfOgP2tXVSzqTLVONJk/BLyJShGQiTktjalhZS2OKZCJephpNnoJfRKQITfVJNqxqy4f/YB9/U32yzDWbOB3cFREpQixmLJrXwIPXLNOoHhGRqIjFjOaG2nJX4y1TV4+ISMQo+EVEIkbBLyISMQp+EZGIUfCLiESMgl9EJGIU/CIiEaPgFxGJGAW/iEjEKPhFRCJGwS8iEjEKfhGRiClp8JvZp8zs92b2pJl918zqzOx4M3vczHaa2f1mVnlzmoqIVLCSBb+ZLQA+CbS5+2lAHFgB3Azc6u4nAV3AlaWqg4iIjFbqrp4EkDKzBDADeA04H9gU3n838JES10FERIYoWfC7+yvAV4CXyAX+m8BWYJ+7Z8LVdgELCj3ezNaaWbuZtXd0dJSqmiIikVPKrp5G4CLgeOBtQD3wgQKreqHHu/t6d29z97bm5uZSVVNEJHJK2dXzHuCP7t7h7gPA94BzgDlh1w9AC/BqCesgIiIjlDL4XwKWmtkMMzPgAuAp4FFgebjOauChEtZBRERGKGUf/+PkDuI+Afwu3NZ64Abgb83sOaAJuLNUdRARkdFKerF1d/888PkRxc8DZ5VyuyIiMjaduSsiEjEKfhGRiFHwi4hEjIJfRCRiFPwiIhGj4BcRiZiSDucUEakmQeB09qRJZ7IkE3Ga6pPEYlbuak2Ygl9EpAhB4OzY3c2aje3s6uqlpTHFhlVtLJrXUHHhr64eEZEidPak86EPsKurlzUb2+nsSZe5ZhOn4BcRKUI6k82H/qBdXb2kM9ky1WjyFPwiIkVIJuK0NKaGlbU0pkgm4mWq0eQp+EVEitBUn2TDqrZ8+A/28TfVV95lw3VwV0SkCLGYsWheAw9es0yjekREoiIWM5obastdjbdMXT0iIhGj4BcRiRgFv4hIxCj4RUQiRgd3RUSKpLl6REQiRHP1iIhEjObqERGJGM3VIyISMZqrR0QkYjRXj4hIxGiuHhGRCNJcPSIiUpEU/CIiEaPgFxGJGAW/iEjEKPhFRCJGwS8iEjEKfhGRiFHwi4hEjIJfRCRiShr8ZjbHzDaZ2TNm9rSZnW1mR5nZT8xsZ/izsZR1EBGR4Uq9x38b8Ii7nwycDjwNfAbY4u4nAVvCZRERmSIlC34zmwW8C7gTwN3T7r4PuAi4O1ztbuAjpaqDiIiMVso9/hOADuAuM/uNmX3TzOqBee7+GkD4c24J6yAiIiOUMvgTwJnAOnc/A+hhAt06ZrbWzNrNrL2jo6NUdRQRiZxSBv8uYJe7Px4ubyL3QbDbzOYDhD/3FHqwu6939zZ3b2tubi5hNUVEoqVkwe/urwMvm9misOgC4CngB8DqsGw18FCp6iAiIqOV+kIsfwPca2ZJ4HngCnIfNg+Y2ZXAS8BflrgOIiIyREmD3923AW0F7rqglNsVEZGx6cxdEZGIUfCLiESMgl9EJGIU/CIiEaPgFxGJGAW/iEjEKPhFRCJGwS8iEjEKfhGRiFHwi4hEjIJfRCRiSj1Jm4hI1QgCp7MnTTqTJZmI01SfJBazcldrwhT8IiJFCAJnx+5u1mxsZ1dXLy2NKTasamPRvIaKC3919YiIFKGzJ50PfYBdXb2s2dhOZ0+6zDWbOAW/iEgR0plsPvQH7erqJZ3JlqlGk6fgFxEpQjIRp6UxNayspTFFMhEvU40mT8EvIlKEpvokG1a15cN/sI+/qT5Z5ppNnA7uiogUIRYzFs1r4MFrlmlUj4hIVMRiRnNDbbmr8Zapq0dEJGIOu8dvZv/1cPe7+/eObHVERKTUxuvq2QRsC28AQzuzHFDwi4hUmPGC/xLgo8Bi4CHgu+7+XMlrJSIiJXPYPn53f9DdVwDvBv4A/LOZ/cLM3j0ltRMRmUaCwOno7ueVroN0dPcTBF7uKk1KsaN6+oA3gf3AsUBdyWokIjINRWauHjM7z8zWA1uB84Db3P0Md//RlNRORGSaqKa5esbb498CbAd+AdQCq8xs1eCd7v7JEtZNRGTaqKa5esYL/v9ObvSOiEikDc7VMzT8K3WunsMGv7t/a4rqISIyrQ3O1TOyj7/q5uoxs//DYfb43f3DR7xGIiLTUJTm6vnKlNRCRKQCVMtcPeN19fx8rPvMbNmRr46IiJTaeF09ceBSYAHwiLs/aWYXAv8ApIAzSl9FERE5ksbr6rkTOAb4FfB1M3sROBv4jLt/v9SVExGZToLA6exJV30ffxuw2N0DM6sD9gJvd/fXS181EZHpIzJn7gJpdw8A3L0PeFahLyJRFKUzd082s+3h7wacOGQZd1883gbC4wTtwCvufqGZHQ/cBxwFPAF8zN0r75UTkUiJ0pm7pwPzgJdHlB8HvFrkNq4FngZmhcs3A7e6+31mdgdwJbCuyOcSESmLajpzd7yunluB/e7+4tAbcDC877DMrAX4C+Cb4bIB55O7wAvA3cBHJlt5EZGpMnjmbktjCqB6z9wFFrr79pGF7t5uZguLeP6vAZ8GGsLlJmCfu2fC5V3khoqOYmZrgbUAxx57bBGbEhEpnWo6c3e8Pf7DzbufOtwDw/H+e9x969DiAqsWnBLC3de7e5u7tzU3N49TTRERKdZ4e/y/NrM17r5haKGZXUlujv7DWQZ82Mw+SO4DZBa5bwBzzCwR7vW3UPyxAhGRsgkC54XOHl7sPMiMZJyD6SzHNc1gYVN9xe31jxf81wEPmtnlHAr6NiAJXHy4B7r7Z4HPApjZucDfu/vlZvbvwHJyI3tWk7uWr4jItLavN83u/X3c+NCT+XH8tyxfzJwZNRxVX1nz94x3zd3d7n4O8AXghfD2BXc/+y2M578B+Fsze45cn/+dk3weEZEp05vOcv2m7cPG8V+/aTu96eobzgmAuz8KPDrZjbj7z4Cfhb8/D5w12ecSESmHrHvBcfzZCrxU1XgHd0VEBKirieeHcg5qaUxRV1N5MVp5NRYRKYOj62sLjuM/usL696HIrh4RkairpnH8Cn4RkSJVyxW41NUjIhIxCn4RkYhR8IuIRIyCX0QkYhT8IiIRo+AXEYkYBb+ISMQo+EVEIkbBLyISMQp+EZGIUfCLiESMgl9EJGI0SZuISJGCwOnsSWt2ThGRKAgCZ8fubtZsbM9fc3fDqjYWzWuouPBXV4+ISBE6e9L50IfcZRfXbGynsydd5ppNnIJfRKQI6Uy24DV305nKu9i6gl9EpAjJROFr7iYT8TLVaPIU/CIiRWiqTxa85m5TfbLMNZs4HdwVESlCLGac1DyTBz5+NgPZgJp4jLkzayvuwC4o+EVEihIEzs6OAxrVIyISFRrVIyISMRrVIyISMTGzgqN6YlZZ3Tyg4BcRKUrM4Jbli4eN6rll+WIqrHsf0MFdEZGi9GUCvvzIDm688FTmpGrY1zvAlx/ZwW0rlpS7ahOm4BcRKUIiZnQc6Ofj396aL2tpTBGvwF1+dfWIiBQhETNuW7FkWFfPbSuWkKjA4Ncev4hIEWprYjTNTPKtK84iZhA4JOK58kqj4BcRKULWndf29XH9pu35E7huWb6YhrrKi9HK+6gSESmDvnSQD33IjeG/ftN2+tJBmWs2cQp+EZEiZN0LnsCV9TJV6C0oWfCb2TFm9qiZPW1mvzeza8Pyo8zsJ2a2M/zZWKo6iIgcKXVjTMtcl6i8/edS1jgD/J27nwIsBT5hZqcCnwG2uPtJwJZwWURkWovHC5/AFa+86fhLd3DX3V8DXgt/7zazp4EFwEXAueFqdwM/A24oVT1ERI6Env5s4RO4LltCU325azcxU/IdxcwWAmcAjwPzwg+FwQ+HuWM8Zq2ZtZtZe0dHx1RUU0RkTDEzmhuGX3SluSFZkXP1lHwckpnNBDYD17n7fivyRXL39cB6gLa2tgo8fCIi1aQuEeN/nH8S19z7RH445+2Xn1mRffwlDX4zqyEX+ve6+/fC4t1mNt/dXzOz+cCeUtZBRORIGMg6//LTncO6ev7lpzv5wodPK3fVJqxkwW+5Xfs7gafd/atD7voBsBr4p/DnQ6Wqg4jIEWPO6nOO54bNh07guvmSxVB5PT0l7eNfBnwMON/MtoW3D5IL/Pea2U7gveGyiMi0FgTkQx9yY/hv2LydIKi8nuhSjur5BWN/Fl5Qqu2KiJRCNhjjBK4KDP7KOyohIlIGNfFYwRO4auKVF6OVN7uQiEgZJGuMO1e3Eo/F87NzZoMsyZrK6+RX8IuIFMEDSGfh6rt/lT+4u25lK155c7Qp+EVEipHOBHxjy7PDhnN+Y8uz3PShd5S7ahNWeZ1TIiLlYHDNeW8nGfbpJ+Mxrjnv7RU5nFN7/CIiRYib0ZvOcuNDTw67EEu8Aqds0B6/iEgRBgIveCGWAQ3nFBGpTmON46/EE7gU/CIiRUhW0Tj+yquxiEgZxAxuvfT0YRdiufXS04lVXhe/Du6KiBSjLxPwpR8+M2w455d++AxfW7Gk3FWbMAW/iEgREjGj40A/H//21nxZS2OKRAXu8qurR0SkCHU1Me5Y2Tqsq+eOla3U1VRejGqPX0SkCJmsU1djfOuKs/Jz9UBAJlt5o3oU/CIiRXCgq2eATz3w2/wJXLdeejoza2vKXbUJq7zvKCIiZZANPB/6kBvD/6kHfqv5+EVEqlXWx7gQiyv4RUSqUtys4AlcmqtHRKRKmcHXV5wxbFTP11ecQQXmvg7uiogUI1UToyGV4IsXncaMZJyD6SwNqQQpDecUEalOB9MBV9z162H9/C2NKe5fu5TG+jJWbBIq76NKRKQMMmPMzpmpwFE92uMXESlCImb8+alzuaT1mPxcPZu3vlyRUzYo+EVEipBKxvjHi08jnXGygbOgMcUZx56m4BcRqVYxg93701x9z9b8mbvrVrZyTGNtuas2YQp+EZEi9PQHfGPLs8OmZf7Glmf5/IfewZwZ5a7dxCj4RUSKYAarzzmeGzZvz+/x33zJ4oocx69RPVJVgsDp6O7nla6DdHT3V+T1UGV6cicf+pAb0XPD5u1U4IwN2uOX6hEEzgudPbzYeTB/gs1xTTNY2FRPrAIPwMn0EowxV09QgcmvPX6pGvt603T3DQwr6+4bYF9vukw1kmqiuXqk4kShC2QgE4waWpeIGQOZoEw1kmqSiBm3LF88bK6eW5Yv1nBOmZ6CwNmxu5s1G9vzB6U2rGpj0byGqusCsRHtGbksMll9mYAvP7Jj2KieLz+yg9su08XWZRrq7EnnQx9y/ZJrNrbzwMfP5k9m1VVN+JvBmwcHuPGhJ/MfcLcsX8zR9clJPV8QOJ09adKZLMlEnKb6ZNW8VjJxY15sXV09Mh2lM9mCB6Ve3dfLM6/vr5pun3TWuX7T8FEX12/aTnoS10Qd/JZ08e2/ZNnNj3Lx7b9kx+7uqnmtZOJiY3T1VOLOgPb4p5H+/gx7D6bJBE4iZhw9I0lt7Vv/EyUT8YJzjHT2pLnu/qfYfNU5zJtddwRaUF7BGJNoTSas9/b0F/yW9L1rzmFuQ+W/VjJx6ay6eirCW/2qPvLxc+oSdPSkGcgG1MRjzJ1ZSyIRI53O0NFzKLCb65MkkxN7afv7M7ze089AxokZDGSd13v6+ROgtjZBX1+Gzt5D22hKJamrG7t8qMZUDV+59J109wZkAqelMcXZJ76T9AA8cu05vNGTJZMJSCQKfwEsZhulMjCQZc+B/vy2586sJZv1gvWJx3KjLkZOmxufxN+8L134W1L/QPaItU0qS11NvGBXT11N/IhvK5MJ2HOgf1TWHCllCX4zez9wGxAHvunu/3Skt5HJBLz6Zi97uvvp7Elz6vx6Xnszi1nuRAx3qK0Z+8MgCJzd3b1ksrlrbc6IO3sO9DM7FePNXmMgG7C7u485qRiv7h/Iz9Pd0pjiriv+C7Nqa0hns9TXxulNB/mQSiVj1MZhX++hsoa6GOlMrn/6mnufyD/P7ZefyVEz4uztOhRyjTPidPcF7DnYT6I3TYCzc3cPX9+yk44D/axb2coJTbXs7cmSiBlzUrk3S9fB7LAPlYw7c1JxOg9mqYkZr7zZW/AN1teXoas/TeBQVxMjk3V29+S2XZuIYQaz65K4516fmrjhnnvNBrJOPGYk4zFiBj3pbD68a8J/lsO9wQcGsrzYdZCX3+jNj8ufWRfj5Tf6uWrIfCl3rGzl2KZaauLG/WuXMhA4A5mATe0vcXFrCwAvdvaMev6RH+yzkvFh37huuvBkbnr4mfxr0dKYoiY+uX8+HS+ofEfX17JhVduoQRJH1x/ZuXoymYBX9/eSzv+/Znl1fy9vm5U6YuE/5cFvZnHgX4H3AruAX5vZD9z9qSO1jSBwduzp5uPfHj6Z0sPbXuJdi+YNO+V6rNEt3f397D0wwNX3bOWT553IKQvmUF8DfzzIqEmajmuqpXlmLbu6emmeWcve7n6uuOvXfLS1hXNPmTdq/aaZNXx0/WPDyo49qjYf+pDbu9zX08cLZqMe33Wgl1V3bc2fMv7dX73I379vEV/50Q6uvmcr969dyrOv7+cLDz/NupWtzJ9VW/BDpb4mPqr8jpWtnDyvIf8G681m2HtggIe37eLC0xdw9YjnmJVKgMGr+/p5eNsuLmk7hu6+DNfet23YAdammUm++R9/5D+f72TdylZOnjsTM+OZ3d2jQnxw+/v6Bujo7h92sPaBtUvz6w++Tlfds5UH1i5lb096WFvu/es/ZX/vAB+9+7FRzx+L2aiRTutWtvKNLc/y46f25JcHw3+wHZOJ6iiNqqpmsZixaF4DD16zrKQf4G/2pdlX6P81Gadp5pHpZizHwd2zgOfc/Xl3TwP3ARcdyQ109qTzoQ+5cLj6nq0sbzt21CnXaza209kz+gSfA31BPnDPOamZq+/ZSm1NTb5s6PN29wZcde6JAFx17on5A4wXndlScP1sllFlB/qCUV0LJ86dVfDxJ86dlV++YfN2Lmk9hhs2b+eqc0/MXxji1LfNzq/fnwlGfahcc+8TBcuvumcrew705+twMB3kX7urCzxHJgt9Q9Z5pasvH/qD612/aTuvdPWx5l0n5Ou050A/ew70Fwzxwe33Z4JRB2sHxujHHwh8VFsGsj6qzoPPX2ik09X3bOWS1mOGLb/nHfO5f+1SbrzwVL78yA76JnFOwFijqgq972R6i8WM5oZaFjTOoLmhtiQf3H0Dhf9f+waO3Pko5ejqWQC8PGR5F/CnI1cys7XAWoBjjz12QhsYaxRLPGYFy9OZ0f22Q6+2kw1/P9wVeOakagCYk6rJr1PsKd6DzzGyf7qYK/7s6urNb3NOqiY3vCxm+XXGq3fB8uyhN9jgOmO9djEbvs6MZLzgejOS8Xxf+6E2HH772QL1O1w//sh1Y8aYz+9j/G0G/46Dy9nA+ej6x/LbmczJOmO9Hwu970Sm4kpf5djjL/SfM6pF7r7e3dvcva25uXlCG0gm4gVPrc6G4TqyPJkYfXAmETt0evZg2AwtG/r4RMw4mM79Ex9MZ/PrxMY4xTs2Ytzv4HOsW9k6bKjY4bY3dHlf7wAtjSkOprOsW9lKXTKWX6elMUXNGM8zVnliSD/2YB3Geu0CH77O0PYPXe9gOks2fOMOtqEmHjvs9gvVr2aMIXW1idHPFThjPv9Y75F9vQPDlgf/VvluutTEzwkYa1uF3ncixfzfv1XlCP5dwDFDlluAV4/kBprqk6z/2PAQXbeylU3tL3HzJcNDY8OqNpoKnODTXJ/MB/F/7uxg3cpW+gcGRoXzupWtzE7FOGV+Az+//lxOmd/Av4XbfuiJXQXXj8cZVVaXjHFcUy33r13Kz68/l/vXLmVOKlbw8X/Ysz+/fPMli9m89WXuWNnKqfMbWDCnljd6Bnjq1Tfz6z+3Z/+o57ljZSszamPcUaB87sxDB6uaUsn8a7fu8jOHrXv75WeSiENdMpZfZ0FjHbetWDIqmBc01rHhP57P12nuzFrmzqw97PaPSiVH3d+fDWhuqOWLF53G/WuX8sWLTqO5oZbH/tDB7SPql0zYmM/fVJ9kw6q2Ua/t5q0vD1uur43l/x4nNdVPajRToW2N9b4TmTuztuD//dD/y7fKfIpnljOzBPAscAHwCvBr4K/c/fdjPaatrc3b29sntJ3BuWn6M1liMaMxFWNfb1D0qB5g2DDN2ak4Pf1BOKrn0IicOak4ceKjhhfuT2fozxQ/qmdGTS4E9hzoJ5MNSMRiJBNGTRwO9A9ft7sv11VhZsTC9phB1nN7xHVJY9/BQ6N69vUG1MQtN5onfJ7aRIxEHAaykM7knn+sYWODwzkLPcfhRvVksk6syFE9mWxAYoxRRSNf20QiNuwxR9XVjKrfYFuGvabjjOqZXRsfNiw3lYwxI544IkNXNapHJqLQMOaaSQwbNbOt7t42qnyqgz+szAeBr5Ebzvm/3f1/HW79yQS/iEjUjRX8ZRnH7+4/BH5Yjm2LiESd5uoREYkYBb+ISMQo+EVEIkbBLyISMWUZ1TNRZtYBvFiipz8a2Fui555O1M7qonZWl1K18zh3H3UGbEUEfymZWXuh4U7VRu2sLmpndZnqdqqrR0QkYhT8IiIRo+CH9eWuwBRRO6uL2lldprSdke/jFxGJGu3xi4hEjIJfRCRiqjr4zewYM3vUzJ42s9+b2bVh+VFm9hMz2xn+bAzLzcy+bmbPmdl2MzuzvC0ojpnVmdmvzOy3YTu/EJYfb2aPh+2838ySYXltuPxceP/CctZ/oswsbma/MbOHw+Wqa6eZvWBmvzOzbWbWHpZV1fsWwMzmmNkmM3sm/D89u9raaWaLwr/j4G2/mV1XznZWdfADGeDv3P0UYCnwCTM7FfgMsMXdTwK2hMsAHwBOCm9rgXVTX+VJ6QfOd/fTgSXA+81sKXAzcGvYzi7gynD9K4Eud387cGu4XiW5Fnh6yHK1tvM8d18yZHx3tb1vAW4DHnH3k4HTyf1dq6qd7r4j/DsuAVqBg8CDlLOd7h6ZG/AQ8F5gBzA/LJsP7Ah//zfgsiHr59erlBswA3iC3HWM9wKJsPxs4Efh7z8Czg5/T4TrWbnrXmT7WsJ/kvOBh8ldyrMa2/kCcPSIsqp63wKzgD+O/JtUWztHtO3PgV+Wu53VvsefF37NPwN4HJjn7q8BhD/nhqsVuhD8gqmr5eSF3R/bgD3AT4A/APvcPROuMrQt+XaG978JNE1tjSfta8CngcErwjdRne104MdmttXM1oZl1fa+PQHoAO4Ku+6+aWb1VF87h1oBfDf8vWztjETwm9lMYDNwnbvvP9yqBcoqYryru2c991WyBTgLOKXQauHPimynmV0I7HH3rUOLC6xa0e0MLXP3M8l97f+Emb3rMOtWajsTwJnAOnc/A+jhUHdHIZXaTgDCY08fBv59vFULlB3RdlZ98JtZDbnQv9fdvxcW7zaz+eH988ntJcMUXAi+1Nx9H/Azcsc05ljuGscwvC35dob3zwbemNqaTsoy4MNm9gJwH7nunq9Rfe3E3V8Nf+4h1x98FtX3vt0F7HL3x8PlTeQ+CKqtnYM+ADzh7rvD5bK1s6qD38wMuBN42t2/OuSuHwCrw99Xk+v7HyxfFR5VXwq8OfhVbDozs2YzmxP+ngLeQ+4g2aPA8nC1ke0cbP9y4KcediZOZ+7+WXdvcfeF5L4y/9TdL6fK2mlm9WbWMPg7uX7hJ6my9627vw68bGaLwqILgKeosnYOcRmHunmgnO0s98GOEh9I+TNyX5G2A9vC2wfJ9fNuAXaGP48K1zfgX8n1j/8OaCt3G4ps52LgN2E7nwT+Z1h+AvAr4DlyXy9rw/K6cPm58P4Tyt2GSbT5XODhamxn2J7fhrffA58Ly6vqfRvWfQnQHr53vw80Vmk7ZwCdwOwhZWVrp6ZsEBGJmKru6hERkdEU/CIiEaPgFxGJGAW/iEjEKPhFRCJGwS9SgJk1DZlN8XUze2XIctLMLjYzN7OThzymzcyetEOzg55oZs+b2azytURkNA3nFBmHmd0EHHD3rwwpe4DcxFpb3PvjulMAAAERSURBVP2mIeW3kzsb9Utm9ghwt7t/F5FpJDH+KiIyVDj30zLgPHJnWd405O5/AJ4wswxQo9CX6UjBLzJxHyE3h/yzZvaGmZ3p7k9Abq4kM7sZuB04tay1FBmD+vhFJu4ycpPEEf68bMT9HwB2o+CXaUp7/CITYGZN5GYFPc3MHIgDbmafdncPp46eDbwPeNDMfuTuB8tYZZFRtMcvMjHLgY3ufpy7L3T3Y8hdRerPwplR/xn4hLv/jtxsi58rY11FClLwi0zMZeTmxx9qM/BXwI3A9939qbD8JmCFmZ00ddUTGZ+Gc4qIRIz2+EVEIkbBLyISMQp+EZGIUfCLiESMgl9EJGIU/CIiEaPgFxGJmP8P5N5dHnwlTxIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEWCAYAAABhffzLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3df5xbdZ3v8dcnyaRNp4VOp6Vip6WAiCKWQkcscF35cXXVi4BLRbjU9rI+WrD+ZFdE3OuKj73XVYqL4F7gFlF+XrEWEHVd9mJFr79ApggVhFJEfrRAOwwtnU5nJpOcz/0jmZDJJDOTaTLp6Xk/H495tDk5J+eTk+Sdk+/5nu8xd0dERKIj1ugCRERkYin4RUQiRsEvIhIxCn4RkYhR8IuIRIyCX0QkYhT8IiIRo+CX/ZqZPWtmvWa228y2mdl3zezP+du7zSxrZn1Ft79oZv8tP323me0ys0fN7PQyj92cn+enJdN3F/0FRevfbWbnm9nlZnZb0fxmZpeY2eb8vM+b2dfMbNJEbCOJHgW/RMEH3X0qcBzwDuAH7j41P+1XwCcHb7v7V/PL/C5//3TgWuAOM5te8rhLgH7gvWZ28ODEoseaCjw/uP783+1l6rsGWAksA6YB7wdOBdbW6PmLDKHgl8hw963AvwNHV7FMANwKNANHlNy9HLge2AicP56azOwIYBVwvrv/zt0z7v44cDbwPjM7dTyPKzISBb9EhpnNBT4A/KGKZeLABcAA8FzR9HnAycDt+b9l4yzrNGCLu/++eKK7vwA8ALxnnI8rUlGi0QWITIAfmlkGeA34N+Cro8wPsNjMdpLb088AS919e9H9y4CN7v6n/HxXmNmx7j7mL5W8mcBLFe57KX+/SE1pj1+i4Cx3n+7uh7j7KnfvHcMyD7j7dKAF+BHwrpL7l5Hb08fdXwR+Sa7pp1qvAAdXuO/g/P0iNaXgFxmBu+8m1wb/UTM7FsDMTiTX3n+Zmb1sZi8D7wTOM7Nqf0X/HJhrZscXT8w3Sy0G1u/tcxAppeAXGYW7dwHfBv4xP2k5cB9wFLAw/3c0MIVcj5xqHvspcgeIbzezxWYWN7O3AXcCP3P3n9XmWYi8Tm38ImPzTeDPZrYAOAdY5u4vF89gZreS+1L4cZWP/UngEuA2YA655p3v8foXjUhNmS7EIiISLWrqERGJGAW/iEjEKPhFRCJGwS8iEjGh6NUzc+ZMnz9/fqPLEBEJlQ0bNrzi7rNKp4ci+OfPn09HR0ejyxARCRUze67cdDX1iIhEjIJfRCRiFPwiIhGj4BcRiRgFv4hIxISiV4+ICEAQOF09adKZLMlEnNbmJLGYNbqs0FHwi0goBIGzaVs3K27pYMuOXtpaUtywrJ0jZ09T+FdJTT0iEgpdPelC6ANs2dHLils66OpJN7iy8FHwi0gopDPZQugP2rKjl3Qm26CKwkvBLyKhkEzEaWtJDZnW1pIimYg3qKLwUvCLSCi0Nie5YVl7IfwH2/hbm5MNrix8dHBXREIhFjOOnD2Nu1edpF49e0nBLyKhEYsZs6ZNanQZoaemHhGRiFHwi4hEjIJfRCRiFPwiIhGj4BcRiRgFv4hIxCj4RUQiRsEvIhIxCn4RkYhR8IuIRIyCX0QkYhT8IiIRU9fgN7OLzexxM3vMzL5nZpPN7FAze9DMNpvZ981MY6qKiEygugW/mc0BPg20u/vRQBw4F/g6cJW7HwHsAD5WrxpERGS4ejf1JICUmSWAKcBLwKnAuvz9NwNn1bkGEREpUrfgd/etwJXA8+QC/zVgA7DT3TP52bYAc8otb2YrzazDzDo6OzvrVaaISOTUs6mnBTgTOBR4I9AMvL/MrF5ueXdf4+7t7t4+a9asepUpIhI59Wzq+c/AX9y9090HgLuAE4Hp+aYfgDbgxTrWICIiJeoZ/M8Di81sipkZcBrwJ+B+YEl+nuXAPXWsQUREStSzjf9BcgdxHwb+mF/XGuBS4O/M7GmgFbixXjWIiMhwdb3Yurt/GfhyyeRngOPruV4REalMZ+6KiESMgl9EJGIU/CIiEaPgFxGJGAW/iEjEKPhFRCKmrt05RURqKQicrp406UyWZCJOa3OSWMwaXVboKPhFJBSCwNm0rZsVt3SwZUcvbS0pbljWzpGzpyn8q6SmHhEJha6edCH0Abbs6GXFLR109aQbXFn4KPhFJBTSmWwh9Adt2dFLOpNtUEXhpeAXkVBIJuK0taSGTGtrSZFMxBtUUXgp+EUkFFqbk9ywrL0Q/oNt/K3Numx3tXRwV0RCIRYzjpw9jbtXnaRePXtJwS8ioRGLGbOmTWp0GaGnph4RkYhR8IuIRIyCX0QkYhT8IiIRo4O7IhIaGqunNhT8IhIKGqundtTUIyKhoLF6akfBLyKhoLF6akfBLyKhoLF6akfBLyKhoLF6akcHd0UkFDRWT+0o+EUkNDRWT22oqUdEJGIU/CIiEaPgFxGJGAW/iEjEKPhFRCJGwS8iEjEKfhGRiFHwi4hEjIJfRCRi6hr8ZjbdzNaZ2ZNm9oSZnWBmM8zsPjPbnP+3pZ41iIjIUPXe478auNfd3wIcAzwBfAFY7+5HAOvzt0VEZILULfjN7ADgr4AbAdw97e47gTOBm/Oz3QycVa8aRERkuHru8R8GdALfNbM/mNm3zawZmO3uLwHk/z2ojjWIiEiJegZ/AjgOuM7djwV6qKJZx8xWmlmHmXV0dnbWq0YRkcipZ/BvAba4+4P52+vIfRFsM7ODAfL/bi+3sLuvcfd2d2+fNWtWHcsUEYmWugW/u78MvGBmR+YnnQb8CfgRsDw/bTlwT71qEBGR4ep9IZZPAbebWRJ4BriA3JfNWjP7GPA88OE61yAiIkXqGvzu/gjQXuau0+q5XhERqUxn7oqIRIyCX0QkYhT8IiIRo+AXEYkYBb+ISMQo+EVEIkbBLyISMQp+EZGIUfCLiESMgl9EJGIU/CIiEVPvQdpERGomCJyunjTpTJZkIk5rc5JYzBpdVugo+EUkFILA2bStmxW3dLBlRy9tLSluWNbOkbOnKfyrpKYeEQmFrp50IfQBtuzoZcUtHXT1pBtcWfgo+EUkFNKZbCH0B23Z0Us6k21QReGl4BeRUEgm4rS1pIZMa2tJkUzEG1RReCn4RSQUWpuT3LCsvRD+g238rc3JBlcWPjq4KyKhEIsZR86ext2rTlKvnr2k4BeR0IjFjFnTJjW6jNBTU4+ISMSMuMdvZn8z0v3ufldtyxERkXobralnHfBI/g+guDHNAQW/iEjIjBb8ZwMfARYA9wDfc/en616ViIjUzYht/O5+t7ufC7wb+DPwDTP7tZm9e0KqExEpEgROZ3c/W3fsobO7nyDwRpcUSmPt1dMHvAbsAuYBk+tWkYhIGRqrp3ZG3OM3s1PMbA2wATgFuNrdj3X3/5iQ6kRE8jRWT+2Mtse/HtgI/BqYBCwzs2WDd7r7p+tYm4hIgcbqqZ3Rgv9vyfXeERFpqMGxeorDX2P1jM+Iwe/uN01QHSIiIxocq6e0jV9j9VRvtBO4fswIe/zufkbNKxIRKUNj9dTOaE09V05IFSIiY6CxempjtKaeX1a6z8xOqn05IiJSb6M19cSBc4A5wL3u/piZnQ58EUgBx9a/RBERqaXRmnpuBOYCvweuMbPngBOAL7j7D+tdnIhIsSBwunrSauPfS6MFfzuwwN0DM5sMvAK8yd1frn9pIiKv05m7tTPaePxpdw8A3L0PeEqhLyKNoDN3a2e0Pf63mNnG/P8NOLzoNu6+YLQV5I8TdABb3f10MzsUuAOYATwMfNTd9cqJyIh05m7tjBb8xwCzgRdKph8CvDjGdXwGeAI4IH/768BV7n6HmV0PfAy4boyPJSIRpTN3a2e0pp6rgF3u/lzxH7Anf9+IzKwN+C/At/O3DTiV3AVeAG4Gzhpv8SISHYNn7ra1pAB05u5eGG2Pf767byyd6O4dZjZ/DI//TeDzwLT87VZgp7tn8re3kOsqOoyZrQRWAsybN28MqxKR/ZnO3K2d0fb4Rxp3PzXSgvn+/tvdfUPx5DKzlh0Swt3XuHu7u7fPmjVrlDJFRGSsRtvjf8jMVrj7DcUTzexj5MboH8lJwBlm9gFyXyAHkPsFMN3MEvm9/jbGfqxARCIsCJxnu3p4rmsPU5Jx9qSzHNI6hfmtzdrrr9Jowf9Z4G4zO5/Xg74dSAIfGmlBd78MuAzAzE4GPufu55vZD4Al5Hr2LCd3LV8RkRHt7E2zbVcfX7rnsUI//tVLFjB9ShMzmjV+TzVGu+buNnc/EfgK8Gz+7yvufsJe9Oe/FPg7M3uaXJv/jeN8HBGJkN50lkvWbRzSj/+SdRvpTas7Z7XGdM1dd78fuH+8K3H3XwC/yP//GeD48T6WiERT1r1sP/6sLhVVtdEO7oqI7BMmN8ULXTkHtbWkmNykGKuWtpiIhMLM5kll+/HPVPt+1cbU1CMi0mjqx187Cn4RCQ1dgas21NQjIhIxCn4RkYhR8IuIRIyCX0QkYhT8IiIRo+AXEYkYBb+ISMQo+EVEIkbBLyISMQp+EZGIUfCLiESMgl9EJGI0SJuIhEYQOF09aY3OuZcU/CISCkHgbNrWzYpbOgrX3L1hWTtHzp6m8K+SmnpEJBS6etKF0IfcZRdX3NJBV0+6wZWFj4JfREIhncmWveZuOqOLrVdLwS8ioZBMlL/mbjIRb1BF4aXgF5FQaG1Olr3mbmtzssGVhY8O7opIKMRixhGzprL2whMYyAY0xWMcNHWSDuyOg4JfREIhCJzNnbvVq6cG1NQjIqGgXj21o+AXkVBQr57aUfCLSCjEzMr26omZmnmqpeAXkVCIGaxesmBIr57VSxag5v3q6eCuiIRCXybgins38aXTj2J6qomdvQNcce8mrj53YaNLCx0Fv4iEQiJmdO7u58JbNxSmtbWkiGuXv2pq6hGRUEjEjKvPXTikqefqcxeSUPBXTXv8IhIKk5pitE5NctMFxxMzCBwS8dx0qY6CX0RCIevOSzv7uGTdxsIJXKuXLGDaZMVYtfRVKSKh0JcOCqEPuT78l6zbSF86aHBl4aPgF5FQyLqXPYEr6w0qKMTqFvxmNtfM7jezJ8zscTP7TH76DDO7z8w25/9tqVcNIrL/mFxhWObJCe2/VqueWywD/L27vxVYDHzCzI4CvgCsd/cjgPX52yIiI4rHy5/AFddw/FWr21ERd38JeCn//24zewKYA5wJnJyf7WbgF8Cl9apDRPYPPf3Z8idwnbeQ1uZGVxcuE/IbyczmA8cCDwKz818Kg18OB1VYZqWZdZhZR2dn50SUKSL7sJgZs6YNvejKrGlJjdUzDnXvB2VmU4E7gc+6+y4b44vk7muANQDt7e06fCMScZMTMT556hGsuv3hQnfOa88/Tm3841DX4DezJnKhf7u735WfvM3MDnb3l8zsYGB7PWsQkf3DQNb5159vHtLU868/38xXzji60aWFTt2C33K79jcCT7j7vxTd9SNgOfC1/L/31KsGEdmPmLP8xEO59M7XT+D6+tkLQC09Vavnb6STgI8Cp5rZI/m/D5AL/PeY2WbgPfnbIiIjCgIKoQ+5PvyX3rmRIFBLcLXq2avn11T+Lj6tXusVkf1TNqhwApeCv2o6KiIiodAUj5U9gasprhirlkY3EpFQSDYZNy5fRDwWL4zOmQ2yJJvUyF8tBb+IhIIHkM7Cx2/+feHg7nVLF+Eao61qCn4RCYV0JuBb658a0p3zW+uf4vIPvq3RpYWOGsdEJBwMVp3yJpL5Nv1kPMaqU96k7pzjoD1+EQmFuBm96SxfuuexIRdiiWvIhqppj19EQmEg8LIXYhlQd86qKfhFJBQq9ePXCVzVU/CLSCgk1Y+/ZrTFRCQUYgZXnXPMkAuxXHXOMcTUxF81HdwVkVDoywR89adPDunO+dWfPsk3z13Y6NJCR8EvIqGQiBmdu/u58NYNhWltLSkS2uWvmpp6RCQUJjfFuH7poiFNPdcvXcTkJsVYtbTHLyKhkMk6k5uMmy44vjBWDwRksurVUy0Fv4iEggM7ega4eO2jhRO4rjrnGKZOamp0aaGj30giEgrZwAuhD7k+/BevfVTj8Y+Dgl9EQiHrFS7E4gr+ain4RSQU4mZlT+DSWD3VU/CLSCiYwTXnHjukV8815x6Lcr96OrgrIqGQaooxLZXgn848minJOHvSWaalEqTUnbNqCn4RCYU96YALvvvQkHb+tpYU31+5mJbmBhYWQvqqFJFQyFQYnTOjXj1V0x6/iIRCIma896iDOHvR3MJYPXdueEFDNoyDgl9EQiGVjPE/PnQ06YyTDZw5LSmOnXe0gn8cFPwiEgoxg2270nz8tg2FM3evW7qIuS2TGl1a6Cj4RSQUevoDvrX+qSHDMn9r/VN8+YNvY/qURlcXLgp+EQkFM1h+4qFceufGwh7/189eoH7846BePRERBE5ndz9bd+yhs7tf1ymV0HGnEPqQ69Fz6Z0b0YgN1dMefwQEgfNsVw/Pde0pnPhySOsU5rc2E9OBMQmJoMJYPYGSv2ra44+Anb1puvsGhkzr7htgZ2+6QRWJVE9j9dSOgj8CBjLBsC5viZgxkAkaVJHUWhSa8hIxY/WSBUPG6lm9ZIG6c46Dmnoiwko+HKW3JbyCwNm0rZsVt3QUDnresKydI2dP26+a8voyAVfcu2lIr54r7t3E1efpYuvVUvBHgBm8tmeAL93zWCEYVi9ZwMzmZKNLkxro6kkXQh9y7d4rbung7lUnMWva/tPHveLF1uvQ1BMETldPmnQmSzIRp7U5SSxmFaeHjZp6IiCddS5ZN7Q3xCXrNpLWtUr3C+lMtuxBz3Qm26CK6iNWoamn1sEbBM6TL+/iQ9f+hpO+fj8fuvY3PPnyLjKZgE3buodM37StO5TNatrjL9Lfn+GVPWkygZOIGTOnJJk0KfybKKgwuFUY37AyXDIRLzuGTTIRb3RpNZXOTkxTT2d3Pytv3TBkR2nlrRtYe+EJZX9Z3bXqRA6aNrmmNdRb+FOtRvr7M7zc089AxokZDGSdl3v6eQOEPvzjsVxviNLhbOP5PaWx/HzNZAK27+5nIBvQFI9x0NRJJBL6wQjQ15ehq/f1HYbWVJLJk0d+z5Ru8wOS8SE7HbOakySTY3vftaSauPKct9PdG5AJnLaWFCcc/namJJrGVdtoz63ax9vbGgbfe+6w+sPHsOaXf2bthi1A7n08uak2X3ADA1m27+4nEzj/Z8Vi7nl4C9/42WYgPwpoNii7A9U/EL5fVg1JNDN7H3A1EAe+7e5fq/U6il/ERMw4aOokmkZ4g3SnM7y2Z4BVtz9caAe/9vzjaG6Kjzv4J6o9cLT1xAzuWPlOwMgGzrTJcXrTuZDYumMPUybF6BsIyLoTDGTZ1t3L7Gm5n9NdPWn6M1kOSMXwfH9pd6cvk+a17mDY9i2upSme+2LoHciO+GVR/KUyKRHDyB3IK65zpF9gIwVLpfvS6QydPbnp06fE2d0XVAy3ciE8+DynNDnPdPUPGz/miNZmJk9OlF1/MhmnN91POpNbJ5ksmSYnnQ1wz7Vl7+gdoK+7f8jzLq65tM54zLj1t3/hf//q2UINh7XCX7r6uaiotuuXLuLQ1kns7A1oTSV5tW+g8GWejBs96SwHpuL09AccmIrxbNHyd130TnbsGRj2eG/KP9dy+voybO7qKWyfC981n4+eeCjZnv4xfQlkMgEv7uolnd8hA/jEqYcD8Ntnuljz0UXMbN774xgDA1me27GHF17tZUoyzrzWFH+zqI0zjp1DImbEYmCU34EafJ/XUr13tMwn+OQHM4sDTwHvAbYADwHnufufKi3T3t7uHR0dY17HwECWJ7fvHvZhfMtBUyuG/9Yde/jImgfKXuRhTkv1A4FMVE+LsazntT19PL8jF04fWdTGyW+dPWzbbPjLK1z+kycLt+fNmMSLO3MHDa9c8naaJyeHfHhPX9g27DGOnNXMn7v2DKll9ZIFXHHvJjp393P90kW8Zfa0IW/gTCbgyW3dQ8Jk9ZIFvNDVw1vnTB+2jjfPbB4S/qXBUhy8QMX7Bqd/+fS38obpU8b03AbDv3ibf3/l4orvm9ZUsuz6D2udNOTL4r1HHcSnTnvzkPmKt1tpzZXqvPb847jtd8+xdsOWQg3lavvBhSdw02+eKbv8nv6Bwmu9duVizila/reXnjLk9uDjrV25mDdW+IwUf67OWdTG0hMOGbJzVfwlWU7X7j627uwbtkN28IGTeWzrLtpmpJh7QKqqXxDldHb38fT23VyybuOw98RgnYe0TuLxrbsLx8sGX6fDZjYz+8DU6CsZo3KfiXKfnbEwsw3u3l46vRG/1Y8Hnnb3Z9w9DdwBnFnLFWzf/fqHCnI/xz5+2wa27+6vuEytL/JQqadFV09tT5oay3p29weF7XHmcW1lt82pRx085PbuvqDwuHNnNA9ZZkn7vLKP0VmmlkvWbeSikw9ny45eLirzGmzf/foeZfEyJx4xq+w6XtkzdPt19abLztfVmx7xvsHpR73xwDE/t3LbfKT3TaX17+wNhkw/e9HcYfMVb7fSmivVuer2h1nxV4cNqaFcbQPZoOLyxa/1QMnypbcLjzfCZ6S4hhV/dVghwEtfj0r6BoJhy6y6/WHSmYALbnqIC7770IjLj1V/JigEeul7YrDO7t7XjzF8f+VivnT6UVxx7yb6anw+TLnPRLnPzt5oRFPPHOCFottbgHeWzmRmK4GVAPPmzatqBeMJ8USFdvDxnhwyUT0txrKe4u1R6bT34l9+paFRuj3jMau4fctNn55qen2e7NAPyUCFdtPsGF/D0V7r0eqs5rkNKt7mI71vRqqtePr0VNPo222MdQ4etxmsoVxtsZiN6TUsPTY02rGicoprGMu2LTWW17cWV+DKjvCeKF5P2e6kNW6+rfSZKP3s7I1G7PGX20rDXjl3X+Pu7e7ePmvWrKpWMPhmKzbaC9SaSnLd0kVDuopdt3QRranx9XVPJuJla6h1T4uxrKd4e8QqnPZuRX2hi0OjdHnIfUgqbd9y03f2Drw+T0l7aFM8Vv40/DG+hiO91iPdN57nNqh4mx+YilV834xl/QA7ewdG325jrHNw+nVLFzE9FSvb/bEpZmN6DZPxoctPSpR/vEkjND9MT8UL22cs27ZUpW04OExDrYK3aYT3RPF6apkRFWup8Jko/ezsjUa08Z8AXO7uf52/fRmAu/9zpWUmoo0f9r73QbF9qY0/nc6wqbOnqjb+4vZ6tfFXbuPfsqOXxy8/jZ29wbD3zUi1FU+vVRv/dUsXMXtakoGsc2AqRk9/wK7+LFvyByz3pLO0zUjR2z/Av218adQ2/ts+9g4yAUMOePb0Zwu396SzzJ2Rom2ENvYgcLr7+9ndF9AUN7Z1D7+Qykht/JU+y794Yhvf37Bl1OXHqq8vw9NdPVxU5j0xuM6Xd+7hmHkHMpChJhlRyUS08Tci+BPkDu6eBmwld3D3v7r745WWqTb4ofpePfWwr/TqAYb0CCntLVPai6VcD50DUjF29Va3zGBvh76BLIkx9OrJZAOSIevVM9prW2n9I3WTLO7ZNNZePU0xI5mI0ZPOkogZzZNivNabZUZzfMjrdkAqxqs92cLyr/YNkMkGJMr06skEzszm+LAvtb3puppKxoa990ZbvvSznErG6O7L1jx4i1+T0vfEAak4u3on7mzd4s/ESJ+d0ewzwZ8v5gPAN8l15/yOu//PkeYfT/CLiERdpeBvSD9+d/8p8NNGrFtEJOp06qWISMQo+EVEIkbBLyISMQp+EZGIaUivnmqZWSfwXKPrmGAzgVcaXUQDRf35g7ZB1J8/7P02OMTdh50BG4rgjyIz6yjXDSsqov78Qdsg6s8f6rcN1NQjIhIxCn4RkYhR8O+71jS6gAaL+vMHbYOoP3+o0zZQG7+ISMRoj19EJGIU/CIiEaPgbzAz+46ZbTezx8rc9zkzczOb2YjaJkqlbWBmnzKzTWb2uJld0aj6JkK5bWBmC83sATN7xMw6zOz4RtZYT2Y218zuN7Mn8q/3Z/LTZ5jZfWa2Of9vS6NrrYcRnv9qM3vSzDaa2d1mNr0W61PwN95NwPtKJ5rZXHIXpH9+ogtqgJso2QZmdgq5azEvcPe3AVc2oK6JdBPD3wdXAF9x94XAP+Zv768ywN+7+1uBxcAnzOwo4AvAenc/Alifv70/qvT87wOOdvcF5K5jclktVqbgbzB3/3/Aq2Xuugr4PGUuS7m/qbANPg58zd378/Nsn/DCJlCFbeDAAfn/Hwi8OKFFTSB3f8ndH87/vxt4gtz1uc8Ebs7PdjNwVmMqrK9Kz9/d/6+7Z/KzPQC01WJ9Cv59kJmdAWx190cbXUsDvRl4l5k9aGa/NLN3NLqgBvgssNrMXiD3i6cme3v7OjObDxwLPAjMdveXIBeOwEGNq2xilDz/Yn8L/Hst1qHg38eY2RTgH8j9tI+yBNBC7mfvJcBaK74ifDR8HLjY3ecCFwM3NrieujOzqcCdwGfdfVej65lolZ6/mf0Dueag22uxHgX/vudw4FDgUTN7ltxPu4fN7A0NrWribQHu8pzfAwG5AauiZDlwV/7/PwD224O7AGbWRC70bnf3wee9zcwOzt9/MLDfNvlVeP6Y2XLgdOB8r9GJVwr+fYy7/9HdD3L3+e4+n1wAHufuLze4tIn2Q+BUADN7M5AkeiM1vgi8O///U4HNDaylrvK/5m4EnnD3fym660fkvgDJ/3vPRNc2ESo9fzN7H3ApcIa776nZ+nTmbmOZ2feAk8ntzW4DvuzuNxbd/yzQ7u77beiV2wbArcB3gIVAGvicu/+8UTXWW4VtsAm4mlyzVx+wyt03NKrGejKz/wT8CvgjuV93AF8k1869FphHrofbh929XGeIUBvh+V8DTAK68tMecPeL9np9Cn4RkWhRU4+ISMQo+EVEIkbBLyISMQp+EZGIUfCLiESMgl8ixcyy+dEuHzOzH5jZnPztR8zsZTPbWnQ7WTL/j0tHRzSzi82sz8wOzN/+66Lld+dHF33EzG4xs5PN7CdFy56VH3XxSTP7o5ntl+PQyL5HwS9R0+vuC939aHLnB3wkf7XGbJMAAAGLSURBVHshcD1w1eBtd0+XzP8q8ImSxzsPeAj4EIC7/0fR43WQO9tyobsvK17IzI4hN/7Ome7+FuAM4EozW1C/py6So+CXKPsV8KYq5v8duREjATCzw4GpwH8n9wVQjc8BX3X3vwDk//1ncuMSidSVgl8iycwSwPvJnSk5lvnjwGnkhhAYdB7wPXJfIEeaWTUjR74NKD0LtyM/XaSuFPwSNSkze4RcyD7P6CNeDs7fBcwgd2GMQecCd7h7QG4wtQ9XUYcx/FoL5aaJ1Fyi0QWITLDefPt7VfPnD97+hFwb/zX5tvgjgPvyo0UngWeA/zXGx30caAc2Fk07DvhTFbWJjIv2+EXGwN1fAz4NfC4/fO55wOWDo6i6+xuBOWZ2yBgf8krgsvxFNwYvvvFF4Bs1Ll1kGAW/yBi5+x+AR8k18ZwL3F0yy9356WN5rEfIDbf7YzN7Evgx8Pn8dJG60uicIiIRoz1+EZGIUfCLiESMgl9EJGIU/CIiEaPgFxGJGAW/iEjEKPhFRCLm/wNSfedBkqDVGgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "for feature in predictors.columns:\n",
    "    sns.scatterplot(predictors[feature],data['CRIM'])\n",
    "    plt.title(feature)\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (a) Try out some of the regression methods explored in this chapter, such as best subset selection, the lasso, ridge regression, and PCR. Present and discuss results for the approaches that you consider.\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 263,
   "metadata": {},
   "outputs": [],
   "source": [
    "results_dict = {}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Best subset selection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 264,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Insteading of running the algorithm, lets try it with hand selected features\n",
    "hand_selected_features = ['NOX','DIS','RAD','LSTAT']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 265,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Error for best subset selection is  44.468614289929995\n"
     ]
    }
   ],
   "source": [
    "lin_reg = LinearRegression()\n",
    "error = cross_val_score(lin_reg,predictors[hand_selected_features],y,cv = 5,scoring = 'neg_mean_squared_error')\n",
    "print('Error for best subset selection is ',-np.mean(error))\n",
    "results_dict['Best_subset'] = -np.mean(error)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  Least Squares"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 266,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Error for best subset selection is  48.57680751139649\n"
     ]
    }
   ],
   "source": [
    "lin_reg = LinearRegression()\n",
    "error = cross_val_score(lin_reg,predictors,y,cv = 5,scoring = 'neg_mean_squared_error')\n",
    "print('Error for best subset selection is ',-np.mean(error))\n",
    "results_dict['least_squares'] = -np.mean(error)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### RIdge Regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 267,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(506, 100)"
      ]
     },
     "execution_count": 267,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ridgecv = RidgeCV(alphas = 10**np.linspace(-4,0,100),normalize = True,store_cv_values=True)\n",
    "ridgecv.fit(predictors,y)\n",
    "#lets look at the shape of cv values\n",
    "ridgecv.cv_values_.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 268,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The best score for ridge regression is  0.44152817621421936\n"
     ]
    }
   ],
   "source": [
    "print(\"The best score for ridge regression is \",ridgecv.score(predictors,y))\n",
    "results_dict['Ridge'] = ridgecv.score(predictors,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 269,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'CV ERROR MSE')"
      ]
     },
     "execution_count": 269,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Cv value are having a shape of (506,100), which means that for each alpha we have to take mean at axis = 0, t0\n",
    "# get mean cv values. 506 suggets that it is LOOCV\n",
    "mse_cv = np.mean(ridgecv.cv_values_,axis = 0)\n",
    "plt.plot(ridge_cv.alphas,mse_cv)\n",
    "plt.plot(ridge_cv.alpha_,np.min(mse_cv),marker = 'o',color = 'red',markersize = 8)\n",
    "plt.xscale('log')\n",
    "plt.xlabel('Alpha')\n",
    "plt.ylabel('CV ERROR MSE')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 270,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Intercept    8.217616\n",
       "ZN           0.033446\n",
       "INDUS       -0.078059\n",
       "CHAS        -1.244094\n",
       "NOX         -5.822660\n",
       "RM          -0.289045\n",
       "AGE          0.001512\n",
       "DIS         -0.656616\n",
       "RAD          0.486683\n",
       "TAX          0.001082\n",
       "PTRATIO     -0.060691\n",
       "B           -0.009707\n",
       "LSTAT        0.229104\n",
       "dtype: float64"
      ]
     },
     "execution_count": 270,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# We will use hstack, for horizontal stacing of numpy arrays, for vertical we would use vstack\n",
    "pd.Series(np.hstack([ridgecv.intercept_,ridgecv.coef_]),index = ['Intercept'] + list(predictors.columns))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Lasso"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 271,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(100, 5)"
      ]
     },
     "execution_count": 271,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lassocv = LassoCV(alphas = 10**np.linspace(-4,0,100),normalize = True,cv = 5)\n",
    "lassocv.fit(predictors,y)\n",
    "\n",
    "lassocv.mse_path_.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 272,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The best score for lasso is  0.4257201493501709\n"
     ]
    }
   ],
   "source": [
    "print(\"The best score for lasso is \",lassocv.score(predictors,y))\n",
    "results_dict['Lasso'] = lassocv.score(predictors,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'CV ERROR MSE')"
      ]
     },
     "execution_count": 273,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# in this case we will take the mean at axis = 1\n",
    "mse_cv = np.mean(lassocv.mse_path_,axis = 1)\n",
    "plt.plot(lassocv.alphas_,mse_cv)\n",
    "plt.plot(lassocv.alpha_,np.min(mse_cv),marker = 'o',color = 'red',markersize = 8)\n",
    "plt.xscale('log')\n",
    "plt.xlabel('Alpha')\n",
    "plt.ylabel('CV ERROR MSE')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Intercept   -0.545888\n",
       "ZN           0.000000\n",
       "INDUS        0.000000\n",
       "CHAS        -0.000000\n",
       "NOX          0.000000\n",
       "RM          -0.000000\n",
       "AGE          0.000000\n",
       "DIS         -0.023275\n",
       "RAD          0.466255\n",
       "TAX          0.000000\n",
       "PTRATIO     -0.000000\n",
       "B           -0.007033\n",
       "LSTAT        0.182062\n",
       "dtype: float64"
      ]
     },
     "execution_count": 274,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Series(np.hstack([lassocv.intercept_,lassocv.coef_]),index = ['Intercept'] + list(predictors.columns))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 275,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 8 coefficients have been reduced to 0 weights, GREAT!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (b) Propose a model (or set of models) that seem to perform well on this data set, and justify your answer. Make sure that you are evaluating model performance using validation set error, crossvalidation, or some other reasonable alternative, as opposed to using training error.\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 284,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Error</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Lasso</th>\n",
       "      <td>0.425720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ridge</th>\n",
       "      <td>0.441528</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Best_subset</th>\n",
       "      <td>44.468614</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>least_squares</th>\n",
       "      <td>48.576808</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   Error\n",
       "Lasso           0.425720\n",
       "Ridge           0.441528\n",
       "Best_subset    44.468614\n",
       "least_squares  48.576808"
      ]
     },
     "execution_count": 284,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame(results_dict,index = ['Error']).T.sort_values(by = 'Error')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 285,
   "metadata": {},
   "outputs": [],
   "source": [
    "# We can see in the above dataframe, that ridge regression has the lease cv error followed by Ridge, best_subset, and least_squares"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (c) Does your chosen model involve all of the features in the data set? Why or why not?\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 286,
   "metadata": {},
   "outputs": [],
   "source": [
    "# No the choosen model, does not contain all the features. In fact, 8 of the features, have 0 coefficients."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Hope you enjoyed the notebook :)\n",
    "# Keep learning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
